javascript的浮点数计算

200-199.1 == 0.1 ?

0.3-0.2 == 0.1 ?

工作中遇到几次这样的运算,刚开始也也以为上面的比较肯定是true,看结果

console.log(200-199.1)
0.9000000000000057
undefined
console.log(0.3-0.2)
0.09999999999999998

工作中涉及到价格的运算,如果不注意,经常会出现这些问题。

javascript采用的是IEEE-754浮点数表示法,这是一种二进制表示法,具有足够的精度。但事实是,javascript的数字不能精确的表述,常常只是真实值的一个近似表示法。

如果涉及到这些运算,尤其是价格的运算,可以先转化为分,再计算。

原文地址:https://www.cnblogs.com/oceanxing/p/2714573.html