使用 number.issafeinteger() 方法可以判断一个值是否为安全整数。该方法在内部会检查两个条件:一是该值必须是整数类型,二是其数值必须落在 -2^53 + 1 到 2^53 - 1 的范围内,即 number.min_safe_integer 和 number.max_safe_integer 之间。如果满足这两个条件,则返回 true,否则返回 false。

如何验证非整数或超出范围的数值
Number.isSafeInteger() 对非整数(如浮点数)直接返回 false,即使它们在数学上是精确的。对于超出安全范围的整数,由于 JavaScript 使用双精度浮点数存储,大整数可能会丢失精度,因此也会返回 false。例如,9007199254740993 会被视为不安全整数,因为它的实际存储值可能与预期不符。

console.log(Number.isSafeInteger(123)); // true console.log(Number.isSafeInteger(1.5)); // false console.log(Number.isSafeInteger(9007199254740993)); // false console.log(Number.isSafeInteger(-9007199254740991)); // true console.log(Number.isSafeInteger(9007199254740992)); // false
为什么需要判断安全整数
在 JavaScript 中,所有数字都以 IEEE 754 双精度浮点数格式存储,这导致超过 2^53 - 1 的整数无法被精确表示。如果不进行安全整数判断,可能会导致计算错误或数据不一致。例如,在金融计算或高精度场景中,使用不安全整数可能导致严重的逻辑错误。

const largeNum = 9007199254740993; console.log(largeNum === 9007199254740992); // true, 精度丢失
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











