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.

A constante Number.MAX_SAFE_INTEGER representa o maior inteiro seguro no JavaScript (253 - 1).

Para inteiros maiores, considere usar BigInt.

Experimente

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
Property attributes of Number.MAX_SAFE_INTEGER
Writableno
Enumerableno
Configurableno

Descrição

A constante MAX_SAFE_INTEGER tem o valor de 9007199254740991 (9,007,199,254,740,991 ou ~9 quadrilhões). A razão por trás deste número é que o JavaScript usa o formato de número de ponto-flutuante de precisão-dupla como especificado na IEEE 754 e pode seguramente representar número entre -(253 - 1) e 253 - 1.

Seguro neste contexto se refere a habilidade de representar inteiros exatamente e corretamente compará-los. Por exemplo, Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2 será avaliado para verdadeiro, que é matematicamente incorreto. Veja Number.isSafeInteger() para mais informação.

Este campo não existe em navegadores antigos. Usando ele sem checar sua existência, como Math.max(Number.MAX_SAFE_INTEGER, 2), irá gerar resultados indesejados como NaN.

Por MAX_SAFE_INTEGER ser uma propriedade estática de Number, você sempre deve usar como Number.MAX_SAFE_INTEGER, ao invés de uma propriedade do objeto Number que você criou.

Polyfill

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

Exemplos

Retorno do valor de MAX_SAFE_INTEGER

js
Number.MAX_SAFE_INTEGER; // 9007199254740991

Números maiores que o inteiro seguro

Isso retorna 2 por quê em pontos flutuantes, o valor é na verdade o final decimal "1" exceto em casos subnormais de precisão como zero.

js
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2

Especificações

Specification
ECMAScript® 2025 Language Specification
# sec-number.max_safe_integer

Compatibilidade com navegadores

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

Veja também