为了账号安全,请及时绑定邮箱和手机立即绑定

var a = 11111111111111111111 打印结果求解答

var a = 11111111111111111111 打印结果求解答

var a = 11111111111111111111;console.log(a);//chrome : 11111111111111110000 //nodejs : 11111111111111110000求大神解释,为什么会打印出不相符的结果?
查看完整描述

1 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

这个跟计算机中用于存储数字的方法有关. 你想想, 你这个整数都已经那么大啦, 忽略了那几百大小, 又有什么影响呢? 至于这是像IEEE754不能存储0.3那样的原因, 还是为了节省开销, 我也不清楚. 不过我们可以来做一个有趣的实验.

在控制台输入Number.MAX_VALUE, 打印出的数字是1.7976931348623157e+308, 注意数他的有效数字位数, 是17. 你试着打印179769313486231571, 最后添加的1也会变成0, 输入1234567890123456789, 会输出1234567890123456800, 可见17是他能达到的最大位数, 再大就会被置为0. 再看你的a, 是16位, 为什么呢? 可能是因为单身狗比较特殊.


查看完整回答
反对 回复 2018-11-01
  • 1 回答
  • 0 关注
  • 800 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号