Number.isSafeInteger()
Number.isSafeInteger() 静态方法用于判断一个值是否为安全整数。
试一试
function warn(x) {
if (Number.isSafeInteger(x)) {
return "Precision safe.";
}
return "Precision may be lost!";
}
console.log(warn(2 ** 53));
// Expected output: "Precision may be lost!"
console.log(warn(2 ** 53 - 1));
// Expected output: "Precision safe."
语法
js
Number.isSafeInteger(testValue)
参数
testValue-
待测试的值,用于判断其是否为安全整数。
返回值
如果给定值是一个安全整数,则返回 true;否则返回 false。
描述
安全整数包括从 -(253 - 1) 到 253 - 1(包含两端,即 ±9,007,199,254,740,991)之间的所有整数。安全整数是指
- 可以精确表示为 IEEE-754 双精度数的整数,并且
- 其 IEEE-754 表示不是通过舍入其他整数以适应 IEEE-754 表示而产生的。
例如,253 - 1 是一个安全整数:它可以被精确表示,并且在任何 IEEE-754 舍入模式下,没有其他整数会被舍入到它。相反,253不是一个安全整数:虽然它可以被 IEEE-754 精确表示,但是整数 253 + 1 无法直接在 IEEE-754 中表示,而是会在四舍五入到最近和舍入到零时被舍入为 253。
要处理大于或小于约 9 千万亿(quadrillion)的数值并保持完整精度,需要使用任意精度算术库。更多关于数字浮点表示的信息,请参阅程序员必知的浮点数运算知识。
对于更大的整数,请考虑使用 BigInt 类型。
示例
使用 isSafeInteger()
js
Number.isSafeInteger(3); // true
Number.isSafeInteger(2 ** 53); // false
Number.isSafeInteger(2 ** 53 - 1); // true
Number.isSafeInteger(NaN); // false
Number.isSafeInteger(Infinity); // false
Number.isSafeInteger("3"); // false
Number.isSafeInteger(3.1); // false
Number.isSafeInteger(3.0); // true
规范
| 规范 |
|---|
| ECMAScript® 2026 语言规范 # sec-number.issafeinteger |
浏览器兼容性
加载中…