Number.MAX_SAFE_INTEGER

Number.MAX_SAFE_INTEGER 定数は、JavaScript において正確に扱える最大整数値(253 - 1)を表します。

Number.MAX_SAFE_INTEGER のプロパティ属性
書込可能 不可
列挙可能 不可
設定可能 不可

説明

MAX_SAFE_INTEGER 定数は 9007199254740991 (9,007,199,254,740,991) である値です。その数である理由は JavaScript が IEEE 754 で指定されたとおり倍精度浮動小数点型数値を使用し安全に -(253 - 1)253 - 1 との間の数を表すことができるからです。

この文脈で示している安全とは、整数を正確に表現し、正しく比較する能力を指します。たとえば、Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2 は、数学的には不正確ですが true と評価されます。詳細については Number.isSafeInteger() を見てください。

MAX_SAFE_INTEGERNumber の静的なプロパティなので、自ら生成した Number オブジェクトのプロパティとしてではなく、常に Number.MAX_SAFE_INTEGER として使うようにしてください。

Number.MAX_SAFE_INTEGER // 9007199254740991
Number.MAX_SAFE_INTEGER * Number.EPSILON // 2 because in floating points, the value is actually the decimal trailing "1"
                                         // except for in subnormal precision cases such as zero

Polyfill

if (!Number.MAX_SAFE_INTEGER) {
    Number.MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; // 9007199254740991
}

仕様

仕様 状況 コメント
ECMAScript 2015 (6th Edition, ECMA-262)
Number.MAX_SAFE_INTEGER の定義
標準 初期定義です。
ECMAScript Latest Draft (ECMA-262)
Number.MAX_SAFE_INTEGER の定義
ドラフト  

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
MAX_SAFE_INTEGERChrome 完全対応 34Edge 完全対応 12Firefox 完全対応 31IE 未対応 なしOpera 完全対応 ありSafari 完全対応 9WebView Android 完全対応 ありChrome Android 完全対応 34Firefox Android 完全対応 31Opera Android 完全対応 ありSafari iOS 完全対応 9Samsung Internet Android 完全対応 ありnodejs 完全対応 0.12

凡例

完全対応  
完全対応
未対応  
未対応

関連情報