JavaScript Number类型基于IEEE 754双精度浮点格式,MAX_VALUE约1.7977×10³⁰⁸,超限得Infinity;MIN_VALUE约5×10⁻³²⁴,过小下溢为0;安全整数范围为±(2⁵³−1),超出则精度丢失。

JavaScript 的 Number 类型用 IEEE 754 双精度浮点格式(64 位)表示,它不靠“位数多”来撑大数,而是靠指数部分动态伸缩范围。极大数和极小数的极限由标准定义,不是估算值,可以直接通过内置常量访问。
极大正数:MAX_VALUE
能表示的最大**有限正数**是 Number.MAX_VALUE,约等于:
1.7976931348623157 × 10³⁰⁸
超过这个值的运算结果会变成 Infinity,例如:
立即学习“Java免费学习笔记(深入)”;
-
Math.pow(10, 309)→Infinity -
Number.MAX_VALUE * 2→Infinity -
typeof Infinity返回"number",它仍是 Number 类型
最接近零的正数:MIN_VALUE
Number.MIN_VALUE 不是最小负数,而是能表示的**最小正数**,约等于:
5 × 10⁻³²⁴
比它还小的正数会直接下溢为 0,例如:
-
Number.MIN_VALUE / 2→0 -
5e-325→0 - 注意:
-Number.MIN_VALUE是合法负数,但不是“最小负数”;最小负数其实是-Number.MAX_VALUE
安全整数边界:别混淆“大”和“准”
极大/极小值 ≠ 能精确表示的整数范围。真正影响整数可靠性的,是安全整数限制:
-
Number.MAX_SAFE_INTEGER === 9007199254740991(2⁵³ − 1) Number.MIN_SAFE_INTEGER === -9007199254740991- 超出后,整数开始“跳变”,比如
9007199254740992 === 9007199254740993返回true - 像 18 位订单号、雪花 ID 高位等,不能直接用
Number存,应转为String或用BigInt
特殊值与判断方式
遇到边界情况时,用标准方法识别,避免手动比较:
-
isFinite(x):排除Infinity和NaN -
Number.isNaN(x):比全局isNaN()更可靠(后者会强制转 Number) -
x === Infinity或x === -Infinity可直接比较 -
Object.is(x, 0)可区分+0和-0,而===不能


















