首页前端开发正文

在js中,非整数的Number类型不能用==或===来比较

朱绪2021-10-21472JavaScript

有一段经典的代码

console.log( 0.1 + 0.2 == 0.3)

输出结果是false。

意味着,两边是不相等的。

这是浮点数运算的精度问题导致的。

正确的比较方法是使用JavaScript提供的最小精度值:

console.log( Math.abs(0.1 + 0.2 - 0.3) <= Number.EPSILON)

这段代码的运行结果就是true了。

检查等式左右两边之差的绝对值是否小于最小精度,才是正确的比较浮点数的方法