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 |
瀏覽器相容性
載入中…