JavaScript整数溢出

6
以下是代码示例:
console.log(Math.pow(2, 53)); 
console.log(Math.pow(2, 53) + 1);

对于这两种计算方法,都会产生完全相同的输出结果:

9007199254740992

为什么?

可能是重复问题:https://dev59.com/hnVC5IYBdhLWcg3wZwNT - Ivo Wetzel
2个回答

11
你看到的结果是由于Math.Pow()使用浮点数进行计算,当你达到第16位小数时,不能仅仅将一加到值的最不显著的小数位上而期望结果会改变。
在64位(8字节)IEEE 754浮点二进制值中,通常有53位用于尾数(包括暗含的1位)。你的计算Math.Pow(2, 53)需要54位的尾数才能保证会改变。如果你加上2,则会看到变化。

-3

所有的 JavaScript 数字都是双精度浮点数。


不管是什么数字,JavaScript中的所有数字都是64位浮点数。 - simeg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接