Number.MAX_SAFE_INTEGER

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

Para inteiros maiores, considere usar BigInt.

Property attributes of Number.MAX_SAFE_INTEGER
Writable no
Enumerable no
Configurable no

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

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

Exemplos

Retorno do valor de MAX_SAFE_INTEGER

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.

Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2

Especificações

Especificação
ECMAScript (ECMA-262)
The definition of 'Number.MAX_SAFE_INTEGER' in that specification.

Compatibilidade de navegador

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
MAX_SAFE_INTEGERChrome Full support 34Edge Full support 12Firefox Full support 31IE No support NoOpera Full support 21Safari Full support 9WebView Android Full support ≤37Chrome Android Full support 34Firefox Android Full support 31Opera Android Full support 21Safari iOS Full support 9Samsung Internet Android Full support 2.0nodejs Full support 0.12

Legend

Full support  
Full support
No support  
No support

Veja também