Number.MAX_SAFE_INTEGER
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
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 の返値
Number.MAX_SAFE_INTEGER; // 9007199254740991
MAX_SAFE_INTEGER と EPSILON の関係
Number.EPSILON
は 2-52 であり、 MAX_SAFE_INTEGER
は 253 - 1 です。どちらも仮数部の幅である 53 ビット(最上位ビットは常に 1)から来ています。これらを乗算すると、2 にとても近い(しかし等しくはない)値が得られます。
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 1.9999999999999998
仕様書
Specification |
---|
ECMAScript Language Specification # sec-number.max_safe_integer |
ブラウザーの互換性
BCD tables only load in the browser