在 JavaScript 中,数字比较可能会遇到一些意想不到的情况,这主要是由于 JavaScript 的数字类型是基于 IEEE 754 双精度浮点数标准实现的,这意味着它能精确表示的整数范围是 -(2^53 - 1) 到 2^53 - 1。超出这个范围的整数比较可能会出现不准确的情况。
BigInt
类型或者第三方库(如 decimal.js
)来处理大数或需要高精度的浮点数比较。function nearlyEqual(a, b, epsilon = 1e-15) {
return Math.abs(a - b) < epsilon;
}
console.log(nearlyEqual(0.1 + 0.2, 0.3)); // true
Number.EPSILON
:JavaScript 提供了一个常量 Number.EPSILON
,可以用来作为浮点数比较的误差范围。function areEqual(a, b) {
return Math.abs(a - b) < Number.EPSILON;
}
console.log(areEqual(0.1 + 0.2, 0.3)); // true
了解这些基本概念和方法可以帮助你在 JavaScript 中更准确地进行数字比较。
领取专属 10元无门槛券
手把手带您无忧上云