为什么0.1+0.2 ! == 0.3,如何让其相等

206 阅读1分钟

因为0.1和0.2的二进制都是无限循环的数

0.1的二进制是0.0001100110011001100...(1100循环),0.2的二进制是:0.00110011001100...(1100循环)

在二进制科学表示法中,双精度浮点数的小数部分最多只能保留52位,再加上前面的1,其实就是保留53位有效数字,剩余的需要舍去,遵从“0舍1入”的原则。

根据这个原则,0.1和0.2的二进制数相加,再转化为十进制数就是:0.30000000000000004

要想等于0.3,就要把它进行转化

(n1 + n2).toFixed(2) // 注意,toFixed为四舍五入