📜  如何在 JavaScript 中检查两个数字是否大致相等?(1)

📅  最后修改于: 2023-12-03 15:38:17.828000             🧑  作者: Mango

如何在 JavaScript 中检查两个数字是否大致相等?

在 JavaScript 中,使用双等号(==)可以检查两个数字是否相等,但这种方法只能检查它们的值是否相等,而不能检查它们是否在一定精度范围内相等。在某些情况下,我们需要比较两个数字是否在一定精度范围内相等,这时就可以使用以下方法:

方法一:使用 Math.abs()

可以使用 Math.abs() 方法来比较两个数字的绝对差是否小于某个精度值,例如:

function approxEqual(a, b, epsilon) {
  return Math.abs(a - b) < epsilon;
}

console.log(approxEqual(0.1 + 0.2, 0.3, 0.0001)); // true

以上代码中,approxEqual() 函数接受三个参数:a、b 和 epsilon,其中 epsilon 表示精度值。如果 a 和 b 的绝对差小于 epsilon,则视为它们相等。例如,0.1 加上 0.2 的结果是 0.30000000000000004(JavaScript 的小数运算有精度问题),如果要判断它是否等于 0.3,就需要将 epsilon 设为一个很小的值,例如 0.0001。

方法二:使用 Number.EPSILON

从 ES6 开始,JavaScript 提供了一个常量 Number.EPSILON,它表示 JavaScript 中可表示的最小精度。使用 Number.EPSILON 可以比较精度更高的数字是否相等,例如:

function approxEqual(a, b) {
  return Math.abs(a - b) < Number.EPSILON;
}

console.log(approxEqual(0.1 + 0.2, 0.3)); // true

以上代码中,approxEqual() 函数接受两个参数:a 和 b。使用 Math.abs(a - b) < Number.EPSILON 可以比较 a 和 b 是否在 Number.EPSILON 精度范围内相等。