var a = 11111111111111111111 打印结果求解答

var a = 11111111111111111111;

console.log(a);

//chrome : 11111111111111110000 

//nodejs : 11111111111111110000

求大神解释,为什么会打印出不相符的结果?

慕尼黑的夜晚无繁华
浏览 801回答 1
1回答

侃侃尔雅

这个跟计算机中用于存储数字的方法有关. 你想想, 你这个整数都已经那么大啦, 忽略了那几百大小, 又有什么影响呢? 至于这是像IEEE754不能存储0.3那样的原因, 还是为了节省开销, 我也不清楚. 不过我们可以来做一个有趣的实验.在控制台输入Number.MAX_VALUE, 打印出的数字是1.7976931348623157e+308, 注意数他的有效数字位数, 是17. 你试着打印179769313486231571, 最后添加的1也会变成0, 输入1234567890123456789, 会输出1234567890123456800, 可见17是他能达到的最大位数, 再大就会被置为0. 再看你的a, 是16位, 为什么呢? 可能是因为单身狗比较特殊.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript