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
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
Specification |
---|
ECMAScript Language Specification # sec-number.max_safe_integer |
Compatibilidade com navegadores
BCD tables only load in the browser