在JavaScript中检查两个数字是否近似相等
我们都见过JavaScript中经典的浮点数运算问题,通常以0.1 + 0.2 === 0.3
返回false
来演示。这是由于浮点数的有限精度,并且是许多编程语言中的常见问题。
在许多情况下,不仅限于精度问题,您可能希望检查两个数字是否近似相等。一般来说,直接的方法是使用Math.abs()
将两个数字的绝对差值与某个epsilon
值进行比较。
const approximatelyEqual = (v1, v2, epsilon = 0.001) =>
Math.abs(v1 - v2) < epsilon;
approximatelyEqual(0.1 + 0.2, 0.3); // true
approximatelyEqual(Math.PI / 2.0, 1.5708); // true