【发布时间】:2019-02-20 17:24:00
【问题描述】:
考虑这段代码(节点 v5.0.0)
const a = Math.pow(2, 53)
const b = Math.pow(2, 53) + 1
const c = Math.pow(2, 53) + 2
console.log(a === b) // true
console.log(a === c) // false
为什么a === b 是真的?
javascript 可以处理的最大整数值是多少?
我正在实现高达 2^64 的随机整数生成器。有什么我应该注意的陷阱吗?
【问题讨论】:
-
抱歉,已经修复了。
-
a 和 b 是同一个数,同一个数是相同的,或者相等的。
-
为什么需要这么大的整数?你能制作两个 32 字符的数字并将它们连接成一个字符串吗?
-
我对以 10 为底的浮点数做了一个简单的模拟(注意:您的计算机使用以 2 为底的浮点数!):jsfiddle.net/unhLemoa 如您所见,如果您将尾数向上移动到尽可能高的位置,您可以获得像
123456789100000000这样的大数字,但您实际上不能将该数字加一;您可以创建的最接近的较高数字是123456789200000000
标签: javascript node.js integer