number.min_value 是大于 0 的最小正规浮点数(5e-324),非最小负数;number.max_value 是最大正有限数(约 1.798e+308),超限得 infinity;二者均不表示安全整数边界。

Number.MIN_VALUE 和 Number.MAX_VALUE 是 JavaScript 中用于表示安全数值边界的两个内置常量,但它们的含义容易被误解——它们**不是**能表示的最小/最大数字,而是可表示的**最接近零的正数**和**最大正有限数**。
Number.MIN_VALUE:最小的正正规数
它表示 JavaScript 中能表示的、大于 0 的最小“正规”(normal)浮点数,值为 5e-324(即 5 × 10⁻³²⁴)。注意:
- 它不是负数的下界,也不是能表示的最小负数(最小负数是 -Number.MAX_VALUE)
- 比它更小的正数(如
Number.MIN_VALUE / 2)仍可能被表示,但会进入“非正规数”(subnormal)范围,精度下降 - 它不等于
Number.EPSILON(后者是 1 与下一个可表示数的差,约 2.22e-16)
Number.MAX_VALUE:最大的正有限数
它表示 JavaScript 双精度浮点数能表示的最大**有限正值**,约为 1.7976931348623157e+308。关键点:
- 超过它会得到
Infinity,例如Number.MAX_VALUE * 2→Infinity - 它不是整数安全上限;整数精度保障上限是
Number.MAX_SAFE_INTEGER(9007199254740991) - 对应的最小有限负数是
-Number.MAX_VALUE,不是Number.MIN_VALUE
别混淆:安全整数与浮点边界
日常开发中更常关心的是整数运算的可靠性:
-
Number.MAX_SAFE_INTEGER:9007199254740991,超出后n + 1 === n可能成立 -
Number.MIN_SAFE_INTEGER:-9007199254740991 -
Number.EPSILON:用于浮点数比较,避免0.1 + 0.2 !== 0.3类问题
实际使用建议
判断数值是否“有效”时,不要只依赖 MIN_VALUE 或 MAX_VALUE:
- 检查是否为有限数:用
isFinite(x)(它自动排除NaN、Infinity、-Infinity) - 检查是否为安全整数:用
Number.isSafeInteger(x) - 避免用
MIN_VALUE当作“下限阈值”,它几乎不用于业务逻辑校验
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











