Art*_*Art 5 javascript math overflow
以下代码
console.log(Math.pow(2, 53)); console.log(Math.pow(2, 53) + 1);
为两个计算生成完全相同的输出:
9007199254740992
为什么?
Jon*_*ler 10
您看到的结果是因为Math.Pow()使用浮点数,当您达到第16个十进制数字时,您不一定要将值加到该值的最低有效十进制数字并期望结果发生变化.
Math.Pow()
通常,在64位(8字节)IEEE 754浮点二进制值中,尾数为53位(包括隐含的1位).您的计算Math.Pow(2, 53)要求尾数中的54位保证更改.如果添加2,您应该看到更改.
Math.Pow(2, 53)
归档时间:
14 年,9 月 前
查看次数:
2226 次
最近记录: