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_INTEGERNumber の静的なプロパティなので、数値のプロパティとしてではなく、常に 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

関連情報