js 缺少整数
js missing integer
Javascript不能使用10100401822940525,它就像Windows中的"conn"文件夹。为什么 js 会失败这个数字?
你可以检查示例,
http://jsfiddle.net/ymutlu/yCpWh/1/
在 IEEE 浮点类型数字中,数字越大,数字之间的差距越大。 当您查看号码的存储方式时,这是有意义的。
考虑具有负指数和非负指数的可能值数量相同。 这意味着 0 到 1 之间的可能数字数量与 1 和无穷大之间的数字数量相同。 显然,1 和无穷大之间的数字间隔得更远。 这个间距实际上是分布式的,所以你离 0 越远,可能存储的数字之间的差距就越大(没有真正的最大数字,只是最终你到达了没有数字与无穷大区分的地步)。
这实际上非常有效,因为在大多数情况下,在处理较大的数字时需要较低的精度。 相对于数字的大小,10100401822940524
和 10100401822940526
之间的差异远不如 1
和 3
之间的差异显著。 能够表示数字2
比10100401822940525
数字重要得多,并且您被限制为 64 位。
我找到了这个:http://gskinner.com/blog/archives/2011/03/the-case-of-the-disappearing-number.html
不知道他是不是对的,但听起来很合理。 ;)
这是浮点舍入的一个实例。Javascript 中的数字被存储 (AFAIK) 为双精度浮点数。浮点数的精度有限,因此当数字变得太大时,它们不能再存储为精确整数,并且需要四舍五入。
这是另一个例子,误差更大。 http://jsfiddle.net/NhZ75/
如果你想知道为什么数学工作,那是因为大多数计算机以比存储它更高的精度进行浮点数学运算,所以舍入错误通常只发生在你将数字存储在变量中时。
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- Js char数组将字符串整数视为整数
- 在JS中返回数组的大整数运算
- 在js中迭代一个数组,同时只将整数复制到另一个数组
- 如何在node.js中设置mysql连接,以在带无符号整数的算术上抛出超出范围的错误
- node.js - 发送一个整数作为 POST 请求中的输入参数
- Node.JS/Javascript - 将字符串转换为整数正在返回 NaN,而我不希望它这样做
- 数组中的整数要么是完全奇数的,要么是完全偶数的,除了单个整数.检索此单个整数..JS
- js 缺少整数
- 如何在节点JS中检查数据类型 - 特别是整数
- 在每次击键时仅接受角度 js 中的整数和浮点数
- JS:while循环以查找连续整数的乘积
- 如何从 JS 中的字符串中获取十六进制整数
- 将 twitter-cldr-js 格式的数字解析回整数或浮点数
- 如何在javascript图表中仅显示整数.js
- 从JS中一个大小为n的数组中随机选取m个整数
- 下划线 JS _.partial 减少维护备忘录引用并将整数转换为字符串
- angular.js解析整数错误
- 用整数替换node.js中的NaN
- 0+整数在JS中很奇怪