Number.isSafeInteger()
Number.isSafeInteger()
メソッドは、指定された値が安全な整数であるかどうかを判定します。
試してみましょう
安全な整数とは、以下のような整数です。
- 正確に IEEE-754 倍精度数として表現することができる
- その IEEE-754 の表現は、他の整数を IEEE-754 の表現に適合するように、丸めた結果にはならない
例えば、2^53 - 1
は安全な整数です。正確に表現することができ、他の整数は、どの IEEE-754 丸めモードの下で丸めたものにもなっていません。対照的に、2^53
は安全な整数ではありません。これは IEEE-754 で正確に表現されますが、整数値 2^53 + 1
が直接 IEEE-754 では表現できず、四捨五入や切り捨ての丸めによって 2^53
になるからです。安全な整数は -(2^53 - 1)
以上 2^53 - 1
以下の整数値です (± 9007199254740991
または ± 9,007,199,254,740,991 です)。
完全な精度で ~9 兆より大きい値や小さい値を扱うには、任意精度演算ライブラリーを使用する必要があります。数値の浮動小数点表現の詳細については、 What Every Programmer Needs to Know about Floating Point Arithmetic を参照してください。s
巨大な整数値については、 BigInt
型を使用することを検討してください。
構文
Number.isSafeInteger(testValue)
引数
testValue
-
安全な整数かどうかをテストする値です。
返値
論理値で、与えられた数値が安全な整数であるかどうかを示します。
ポリフィル
Number.isSafeInteger = Number.isSafeInteger || function (value) {
return Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER;
};
例
isSafeInteger の使用
Number.isSafeInteger(3); // true
Number.isSafeInteger(Math.pow(2, 53)); // false
Number.isSafeInteger(Math.pow(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
仕様書
Specification |
---|
ECMAScript Language Specification # sec-number.issafeinteger |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
Number.isSafeInteger
のポリフィルはcore-js
で利用できます- このメソッドが所属する
Number
オブジェクト Number.MIN_SAFE_INTEGER
Number.MAX_SAFE_INTEGER
BigInt