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 (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 完全対応 21Safari 完全対応 9WebView Android 完全対応 ≤37Chrome Android 完全対応 34Firefox Android 完全対応 31Opera Android 完全対応 21Safari iOS 完全対応 9Samsung Internet Android 完全対応 2.0nodejs 完全対応 0.12

凡例

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

関連情報