解决JS中浮点数乘法错误问题

 解决JS中浮点数乘法错误问题

 

alert(39.2*3);

我们直接结算,随后输出:

117.60000000000001

对于浮点数乘法出现计算错误,我们的解决思路就是*10,然后把结果/10

alert(39.2*10*3/10);

 

这样结果就正确了。

在网上找到的解释是:

 java和JavaScript中计算小数运算时,都会先将十进制的小数换算到对应的二进制,一部分小数并不能完整的换算为二进制,这里就出现了第一次的误差。待小数都换算为二进制后,再进行二进制间的运算,得到二进制结果。然后再将二进制结果换算为十进制,这里通常会出现第二次的误差。要避免这种情况呢,通常可以将小数同时扩大相同10的整倍数,完成计算后,在去掉之前添加的整倍数。

你可能感兴趣的:(大前端爬坑之路)