Number.isSafeInteger()

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 2015 年 9 月以來,該特性已在各大瀏覽器中可用。

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

瀏覽器相容性

另見