JavaScript Number研究02:静态属性——EPSILON、MAX_SAFE_INTEGER、MAX_VALUE、MIN_SAFE_INTEGER、MIN_VALUE、NaN
在JavaScript中,Number
对象是处理数值的核心。除了基本的数值操作外,Number
还提供了一系列静态属性,帮助我们更好地理解和操作数字。在本篇文章中,我们将深入探讨以下静态属性:
Number.EPSILON
Number.MAX_SAFE_INTEGER
Number.MAX_VALUE
Number.MIN_SAFE_INTEGER
Number.MIN_VALUE
Number.NaN
通过对这些属性的了解,我们可以更有效地处理浮点数精度问题、整数安全范围,以及特殊数值NaN
等。
Number.EPSILON
定义
Number.EPSILON
表示能够表示的两个浮点数之间的最小差值,约等于2.220446049250313e-16
。这是JavaScript中1和大于1的最小浮点数之间的差值。
用途
由于浮点数的精度限制,直接比较两个浮点数可能会导致意想不到的结果。Number.EPSILON
可以用于判断两个数字在可接受的误差范围内是否相等。
示例
function numbersApproximatelyEqual(a, b) {
return Math.abs(a - b) < Number.EPSILON;
}
console.log(0.1 + 0.2 === 0.3); // false
console.log(numbersApproximatelyEqual(0.1 + 0.2, 0.3)); // true
Number.MAX_SAFE_INTEGER
定义
Number.MAX_SAFE_INTEGER
是JavaScript中能够安全表示的最大整数,值为9007199254740991
(即
2
53
−
1
2^{53} - 1
253−1)。
用途
超过此值的整数在JavaScript中无法精确表示,可能会导致计算错误。因此,在处理大整数时,应谨慎使用,并考虑使用大整数库或BigInt
类型。
示例
console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991
console.log(Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2); // true
Number.MIN_SAFE_INTEGER
定义
Number.MIN_SAFE_INTEGER
是JavaScript中能够安全表示的最小整数,值为-9007199254740991
(即
−
(
2
53
−
1
)
-(2^{53} - 1)
−(253−1))。
用途
同样地,小于此值的负整数无法精确表示,需要谨慎处理。
示例
console.log(Number.MIN_SAFE_INTEGER); // -9007199254740991
console.log(Number.MIN_SAFE_INTEGER - 1 === Number.MIN_SAFE_INTEGER - 2); // true
Number.MAX_VALUE
定义
Number.MAX_VALUE
是JavaScript中能够表示的最大正数,约为1.7976931348623157e+308
。
用途
大于Number.MAX_VALUE
的数字在JavaScript中将被表示为Infinity
。
示例
console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
console.log(Number.MAX_VALUE * 2); // Infinity
Number.MIN_VALUE
定义
Number.MIN_VALUE
是JavaScript中能够表示的最小正数,约为5e-324
。
用途
这是接近0的最小正数,但不是最小的负数。小于Number.MIN_VALUE
的正数将在JavaScript中被下舍入为0
。
示例
console.log(Number.MIN_VALUE); // 5e-324
console.log(Number.MIN_VALUE / 2); // 0
Number.NaN
定义
Number.NaN
表示“非数字”(Not-A-Number),用于表示无法被解析为数字的结果。
用途
在计算过程中,如果操作无法产生有效数字结果(例如0 / 0
或parseInt('abc')
),将返回NaN
。需要注意的是,NaN
不等于任何值,包括它自身。
示例
console.log(Number.NaN); // NaN
console.log(0 / 0); // NaN
console.log(parseInt('abc')); // NaN
console.log(NaN === NaN); // false
正确判断NaN的方法:
console.log(isNaN(NaN)); // true
console.log(Number.isNaN(NaN)); // true
参考资料: