为什么JS中 0.1 + 0.2 !== 0.3

在计算机中,数据都是以二进制的形式进行存储的。js中的数值遵循 IEEE-754 标准,使用双精度浮点数来表示。

其中最高位为符号位 S ,接着是 11 位的指数位 E,最后剩余的 52 位有效数字为尾数位M。

0.1 转换为二进制为:0.0001 1001 1001 1001 ... ( 无限循环 )
0.2 转换为二进制为:0.0011 0011 0011 0011 ... ( 无限循环 )

因为精度有限,截取于第52位, 就会产生一个有误差的结果:0.1 + 0.2 = 0.30000000000000004

posted @ 2022-10-19 02:18  如是。  阅读(34)  评论(0编辑  收藏  举报