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 を使用することを検討してください。

試してみましょう

const x = Number.MAX_SAFE_INTEGER + 1;
const y = Number.MAX_SAFE_INTEGER + 2;

console.log(Number.MAX_SAFE_INTEGER);
// Expected output: 9007199254740991

console.log(x);
// Expected output: 9007199254740992

console.log(x === y);
// Expected output: true

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® 2025 Language Specification
# sec-number.max_safe_integer

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
MAX_SAFE_INTEGER

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報