JavaScript整数溢出

时间:2011-01-30 00:57:24

标签: javascript math overflow

以下代码

console.log(Math.pow(2, 53)); 
console.log(Math.pow(2, 53) + 1);

为两次计算产生完全相同的输出:

9007199254740992

为什么?

2 个答案:

答案 0 :(得分:10)

您看到的结果是因为Math.Pow()正在处理浮点数,当您达到第16个十进制数时,您不一定要将值加到值的最低有效十进制数字并期望结果改变。

通常,在64位(8字节)IEEE 754浮点二进制值中,尾数为53位(包括隐含的1位)。您的计算Math.Pow(2, 53)要求尾数中的54位保证更改。如果添加2,您应该看到更改。

答案 1 :(得分:-3)

所有Javascript号都是双倍的。