alert(39.2*3);
我们直接结算,随后输出:
117.60000000000001
对于浮点数乘法出现计算错误,我们的解决思路就是*10,然后把结果/10
alert(39.2*10*3/10);
这样结果就正确了。
在网上找到的解释是:
java和JavaScript中计算小数运算时,都会先将十进制的小数换算到对应的二进制,一部分小数并不能完整的换算为二进制,这里就出现了第一次的误差。待小数都换算为二进制后,再进行二进制间的运算,得到二进制结果。然后再将二进制结果换算为十进制,这里通常会出现第二次的误差。要避免这种情况呢,通常可以将小数同时扩大相同10的整倍数,完成计算后,在去掉之前添加的整倍数。