Todos os números em JavaScript, sejam inteiros ou decimais, são do número do tipo. Dentro do programa, a essência do tipo de número é um número de ponto flutuante de 64 bits, que é consistente com o número de ponto flutuante do tipo duplo em Java; Portanto, todos os números no JavaScript são números de ponto flutuante. Seguindo o padrão IEEE 754 (padrão aritmético do ponto flutuante), a faixa de valores que o JavaScript pode representar é mais ou menos 1.7976931348623157 vezes 10 para a potência de 308, e o número decimal mínimo que pode representar é mais ou menos 5 vezes a potência de minúsculas 324. do objeto numérico, respectivamente.
Para números inteiros, de acordo com os requisitos do padrão ECMAScript (http://ecma262-5.com/els5_html.htm#section_8.5), a gama de números inteiros que JavaScript pode representar e executar operações de aritmética precisa: o mínimo de 53 de 53 ou minúscrios 8, em que o 81 de 193 ou o valor de 80 ou o valor de 80 ou 81 de 80 ou 81 de 193 ou minim4 ou minúsculos de 193 ou minim4 ou minúsculos de 9 Valor máximo +9007199254740992; Para números inteiros que excedem esse intervalo, o JavaScript ainda pode executar operações, mas não garante a precisão dos resultados do cálculo. Vale ressaltar que, para operações de bit inteiro (como mudança e outras operações), o JavaScript suporta apenas números inteiros de 32 bits, ou seja, números inteiros de -2147483648 a +2147483647.
experimentar
Exibe o valor absoluto do número máximo e o valor absoluto do número decimal mínimo no JavaScript:
A cópia do código é a seguinte:
console.log (número.max_value);
console.log (número.min_value);
Os resultados são 1.7976931348623157e+308 e 5e-324.
O JavaScript não pode dar um resultado exato de cálculo para números inteiros fora do poder de 53 de mais ou menos 2:
A cópia do código é a seguinte:
var a = 9007199254740992;
console.log (a+3);
O resultado do cálculo correto deve ser 9007199254740995, mas o resultado do cálculo dado pelo JavaScript é 9007199254740996. Se o desvio na precisão do cálculo for aceitável, as consequências do exemplo a seguir serão ainda mais graves:
A cópia do código é a seguinte:
var max_int = 9007199254740992;
for (var i = max_int; i <max_int +2; ++ i) {
// loop infinito
}
Devido a problemas de precisão do cálculo, o exposto para a declaração cairá em um loop morto.
Para operações de bits, o JavaScript suporta apenas números inteiros de 32 bits:
A cópia do código é a seguinte:
var smallInt = 256;
var bigint = 2200000000;
console.log (smallInt / 2);
console.log (smallInt >> 1);
console.log (bigint / 2);
console.log (bigint >> 1);
Pode -se observar que, para números inteiros em 32 bits (256), o JavaScript pode executar operações corretas de bits e o resultado é consistente com o resultado da operação de divisão (128). Para números inteiros além de 32 bits, o JavaScript pode executar operações de divisão corretas (1100000000), mas os resultados obtidos após a execução de operações de bit estão longe dos resultados corretos (-1047483648).