为什么下面的比较式返回false?

0.1 + 0.2 == 0.3  

2个回答

这个其实和机器表示浮点数有关系,你可以尝试打印0.1+0.2,结果应该不会是0.3,我试的结果是:0.30000000000000004,这就是问题所在了~


在javascript中,你不能用==来判断两个值是否相等,而应该先求这两个值的差值的绝对值,将该绝对值和一个很小的值X去比较,看看其是否小于X,看看下面的例子:

x = 0.1;
y = 0.2;
equal = (Math.abs(x - y) < 0.000001)

更多的内容,你可以去看看这篇文章