灵魂两问:
- 为什么 0.1 + 0.2 != 0.3
- 如何解决该问题
1、为什么 0.1 + 0.2 != 0.3
这是因为 JavaScript 存储数值采用的是双精度浮点数,但是 JS 采用的浮点数标准会裁剪我们的数字,这就出现了精度丢失的问题。这时:
0.100000000000000000000002 === 0.1 // true
conole.log(0.100000000000000002) // 输入0.1 为什么输出的不是0.100000000000000002,
这是因为二进制转换成了十进制,十进制又被转换成了字符串,这个过程中发生了取近似值的过程
2、如何解决该问题
parseFloat((0.1 + 0.2).toFixed(10)) === 0.3 // true