Number.MAX_SAFE_INTEGER
Number.MAX_SAFE_INTEGER 定数は、JavaScript における安全な整数の最大値 (253 – 1) を表します。
もっと大きな整数には、 BigInt を使用することを検討してください。
試してみましょう
値
9007199254740991 (9,007,199,254,740,991、または ~9 千兆)。
Number.MAX_SAFE_INTEGER のプロパティ属性 |
|
|---|---|
| 書込可能 | 不可 |
| 列挙可能 | 不可 |
| 設定可能 | 不可 |
解説
倍精度浮動小数点型数値は仮数部を表わすのに 52 ビットしかないため、安全に表現できる整数は -(253 – 1) と 253 – 1 との間です。この文脈で示している「安全」とは、整数を正確に表現し、正しく比較する能力を指します。たとえば、 Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2 は、数学的には不正確ですが true と評価されます。詳細については Number.isSafeInteger() を見てください。
MAX_SAFE_INTEGER は Number の静的なプロパティなので、数値のプロパティとしてではなく、常に Number.MAX_SAFE_INTEGER として使うようにしてください。
例
MAX_SAFE_INTEGER の返値
js
Number.MAX_SAFE_INTEGER; // 9007199254740991
MAX_SAFE_INTEGER と EPSILON の関係
Number.EPSILON は 2-52 であり、 MAX_SAFE_INTEGER は 253 - 1 です。どちらも仮数部の幅である 53 ビット(最上位ビットは常に 1)から来ています。これらを乗算すると、2 にとても近い(しかし等しくはない)値が得られます。
js
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 1.9999999999999998
仕様書
| Specification |
|---|
| ECMAScript Language Specification # sec-number.max_safe_integer |
ブラウザーの互換性
BCD tables only load in the browser