js 缺少整数

js missing integer

本文关键字:整数 js      更新时间:2023-09-26

Javascript不能使用10100401822940525,它就像Windows中的"conn"文件夹。为什么 js 会失败这个数字?

你可以检查示例,

http://jsfiddle.net/ymutlu/yCpWh/1/

在 IEEE 浮点类型数字中,数字越大,数字之间的差距越大。 当您查看号码的存储方式时,这是有意义的。

考虑具有负指数和非负指数的可能值数量相同。 这意味着 0 到 1 之间的可能数字数量与 1 和无穷大之间的数字数量相同。 显然,1 和无穷大之间的数字间隔得更远。 这个间距实际上是分布式的,所以你离 0 越远,可能存储的数字之间的差距就越大(没有真正的最大数字,只是最终你到达了没有数字与无穷大区分的地步)。

这实际上非常有效,因为在大多数情况下,在处理较大的数字时需要较低的精度。 相对于数字的大小,1010040182294052410100401822940526 之间的差异远不如 13 之间的差异显著。 能够表示数字210100401822940525数字重要得多,并且您被限制为 64 位。

我找到了这个:http://gskinner.com/blog/archives/2011/03/the-case-of-the-disappearing-number.html

不知道他是不是对的,但听起来很合理。 ;)

这是浮点舍入的一个实例。Javascript 中的数字被存储 (AFAIK) 为双精度浮点数。浮点数的精度有限,因此当数字变得太大时,它们不能再存储为精确整数,并且需要四舍五入。

这是另一个例子,误差更大。 http://jsfiddle.net/NhZ75/

如果你想知道为什么数学工作,那是因为大多数计算机以比存储它更高的精度进行浮点数学运算,所以舍入错误通常只发生在你将数字存储在变量中时。