在JavaScript中,0.1+0.2不能等于0.3
console.log( 0.1 + 0.2 == 0.3 );
这里的输出结果为false,说明两边是不相等的,这是浮点运算的特点。
这里是由于浮点运算的精度问题导致等式左右的结果并不是严格相等,而是相差了个微小的值。所以实际上,这里错误的并不是结论,而是比较的方法。正确的比较方法是使用JavaScript提供的最小精度值:
console.log(Math.abs(0.1+0.2-0.3) <= Number.EPSILON)
这段代码的结果就是true了。
检查等式左右两边差的绝对值是否小于最小精度,才是正确的比较浮点数的方法。