0.1 + 0.2

翻车现场

原因

Javascript 使用 Number 表示数字,使用64位固定长度来表示。

0.1的二进制舍去之后就是(怎么转换? 有阶码等原理)

0.00011001100110011001100110011001100110011001100110011010

0.2的舍去之后的二进制表示为:

0.0011001100110011001100110011001100110011001100110011010

两数相加转成10进值正好是`0.30000000000000004

第二个例子

相同的原理,下面的乘式也会出错

35.41 * 100 = 3540.9999999999995

解决

最后更新于