在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