JavaScript中安全整数范围是-9007199254740991到9007199254740991,超出则精度丢失;MAX_VALUE≈1.797e+308,MIN_VALUE≈5e-324,EPSILON≈2.22e-16用于浮点比较容差。

JavaScript 的 Number 类型是 64 位双精度浮点数,能安全表示的整数范围有限。理解其边界和相关 API 是避免精度丢失、溢出或意外行为的关键。
Number.MAX_SAFE_INTEGER 和 Number.MIN_SAFE_INTEGER
这两个常量定义了 JavaScript 中“安全整数”的上下界:即能被精确表示、且相邻整数之间无间隙的最大/最小整数。
- MAX_SAFE_INTEGER = 253 − 1 = 9007199254740991(约 9e15)
- MIN_SAFE_INTEGER = −(253 − 1) = −9007199254740991
- 超出此范围的整数可能无法唯一表示,例如
9007199254740992 === 9007199254740993返回true - 可用
Number.isSafeInteger(n)判断一个值是否为安全整数
Number.MAX_VALUE 和 Number.MIN_VALUE
它们表示可表示的**最大正数**和**最小正数(非零)**,与安全整数无关,而是浮点数表示能力的极限。
-
MAX_VALUE ≈ 1.7976931348623157e+308:再大的数会变成
Infinity -
MIN_VALUE ≈ 5e−324:这是**最接近 0 的正数**(不是负数下限),更小的正数会变成
0 - 注意:
Number.MIN_VALUE不是能表示的最小负数;负数下限是-Number.MAX_VALUE
Number.EPSILON
表示 1 与大于 1 的最小可表示数之间的差值(≈ 2.220446049250313e−16),用于浮点数比较容差。
立即学习“Java免费学习笔记(深入)”;
- 直接用
===比较浮点运算结果易出错,例如0.1 + 0.2 === 0.3为false - 推荐写法:
Math.abs(a - b) - 也可用
Number.EPSILON * Math.max(Math.abs(a), Math.abs(b))做相对误差判断
Infinity、-Infinity 与 NaN 的判定
超出数值范围或非法运算会产生特殊值,需用专用方法识别:
-
isFinite(n):返回true仅当n是普通数字(非Infinity、-Infinity、NaN) -
Number.isNaN(n):比全局isNaN()更可靠(后者会强制类型转换) -
!isFinite(n) && !Number.isNaN(n)可区分Infinity和NaN


















