Número do JavaScript
- Página Anterior Template de String do JS
- Próxima Página JS BigInt
JavaScript tem apenas um tipo de número.
Pode escrever números com ou sem ponto decimal.
JavaScript Número
Os números do JavaScript podem ser escritos com ou sem ponto decimal:
Exemplo
var x = 3.14; // Valor com ponto decimal var y = 3; // Valor sem ponto decimal
Números muito grandes ou muito pequenos podem ser escritos em notação científica:
Exemplo
var x = 123e5; // 12300000 var y = 123e-5; // 0.00123
Os números do JavaScript sempre são números de ponto flutuante de 64 bits
Diferente de muitos outros linguagens de programação, o JavaScript não define diferentes tipos de números, como inteiros, shorts, longs, de ponto flutuante, etc.
Os números do JavaScript sempre são armazenados como números de ponto flutuante dupla precisão, de acordo com o padrão internacional IEEE 754.
Este formato usa 64 bits para armazenar números, onde 0 a 51 armazenam os dígitos (fragmentos), 52 a 62 armazenam o exponencial e o bit 63 armazena o sinal:
Valor(ou Fração/Mantissa) | Exponencial | Sinal |
---|---|---|
52 bits(0 - 51) | 11 bits (52 - 62) | 1 bit (63) |
Precisão
Os inteiros (sem usar exponenciais ou notação científica) são arredondados a 15 dígitos.
Exemplo
var x = 999999999999999; // x será 999999999999999 var y = 9999999999999999; // y será 10000000000000000
O número máximo de dígitos para números decimais é 17, mas a aritmética de ponto flutuante não é sempre 100% precisa:
Exemplo
var x = 0.2 + 0.1; // x será 0.30000000000000004
O uso de multiplicação e divisão ajuda a resolver o problema acima:
Exemplo
var x = (0.2 * 10 + 0.1 * 10) / 10; // x será 0.3
Soma de número e string
Aviso !!
A adição e a concatenação no JavaScript usam o operador +.
Os números são somados. As strings são concatenadas.
Se somar dois números, o resultado será um número:
Exemplo
var x = 10; var y = 20; var z = x + y; // z será 30 (um número)
Se somar duas strings, o resultado será uma concatenação de strings:
Exemplo
var x = "10"; var y = "20"; var z = x + y; // z será 1020 (string)
Se você somar um número e uma string, o resultado também será uma concatenação de strings:
Exemplo
var x = 10; var y = "20"; var z = x + y; // z será 1020 (uma string)
Se você somar um número e uma string, o resultado também será concatenação de strings:
Exemplo
var x = "10"; var y = 20; var z = x + y; // z será 1020 (string)
Um erro comum é acreditar que o resultado deve ser 30:
Exemplo
var x = 10; var y = 20; var z = "The result is: " + x + y;
Um erro comum é acreditar que o resultado deve ser 102030:
Exemplo
var x = 10; var y = 20; var z = "30"; var result = x + y + z;
O JavaScript compila da esquerda para a direita.
Porque x e y são números, 10 + 20 serão somados.
Porque z é uma string, 30 + "30" será concatenado.
String numérica
As strings do JavaScript podem conter conteúdo numérico:
var x = 100; // x é um número var y = "100"; // y é uma string
Em todas as operações matemáticas numéricas, o JavaScript tentará converter strings para números:
Esse exemplo funcionará assim:
var x = "100"; var y = "10"; var z = x / y; // z será 10
Esse exemplo também funcionará assim:
var x = "100"; var y = "10"; var z = x * y; // z será 1000
Esse exemplo funcionará assim:
var x = "100"; var y = "10"; var z = x - y; // z será 90
Mas esse exemplo não funcionará como o anterior:
var x = "100"; var y = "10"; var z = x + y; // z não será 110 (será 10010)
No último exemplo, o JavaScript usou o operador + para concatenar strings.
NaN - Não Número
NaN
É uma palavra reservada do JavaScript, que indica que um número não é um número válido.
Tentar uma divisão com uma string não numérica resultará em NaN (Not a Number):
Exemplo
var x = 100 / "Apple"; // x será NaN (Not a Number)
No entanto, se a string contiver um número, o resultado será um número:
Exemplo
var x = 100 / "10"; // x será 10
Você pode usar a função global do JavaScript isNaN()
para determinar se um valor é um número:
Exemplo
var x = 100 / "Apple"; isNaN(x); // Devolve true, pois x não é um número
a fim de ser cuidadoso NaN
。Cuidado se você usar NaN
então o resultado também será NaN
:
Exemplo
var x = NaN; var y = 5; var z = x + y; // z será NaN
o resultado pode ser concatenado:
Exemplo
var x = NaN; var y = "5"; var z = x + y; // z será NaN5
NaN
é um número,typeof NaN
retorna number
:
Exemplo
typeof NaN; // retorna "number"
Infinity
Infinity
ou -Infinity
)é o valor retornado pelo JavaScript quando o cálculo numérico excede o limite máximo possível.
Exemplo
var myNumber = 2; while (myNumber != Infinity) { // executa até Infinity myNumber = myNumber * myNumber; }
Dividir por 0 (zero) também gera Infinity
:
Exemplo
var x = 2 / 0; // x será Infinity var y = -2 / 0; // y será -Infinity
Infinity
é um número:typeOf Infinity
retorna number
.
Exemplo
typeof Infinity; // retorna "number"
hexadecimal
O JavaScript retorna valores com prefixo 0x
Os constantes numéricos são interpretados como hexadecimal.
Exemplo
var x = 0xFF; // x será 255.
Nunca escreva números com zeros à esquerda (por exemplo, 07).
Algumas versões do JavaScript interpretam números com zeros à esquerda como octal.
Por padrão, o Javascript exibe números como decimais.
Mas você pode usar toString()
O método converte o número em hexadecimal, octal ou binário.
Exemplo
var myNumber = 128; myNumber.toString(16); // retorna 80 myNumber.toString(8); // retorna 200 myNumber.toString(2); // retorna 10000000
Os números podem ser objetos
Normalmente, os números JavaScript são criados por valores primitivos: var x = 123
Mas também pode ser definido através da palavra-chave new
Definido como objeto: var y = new Number(123)
Exemplo
var x = 123; var y = new Number(123); // typeof x retorna number // typeof y retorna object
Não crie objetos numéricos. Isso pode atrasar a execução.
new
Palavras-chave que complicam o código e produzem alguns resultados inesperados:
ao usar ==
ao usar o operador de igualdade, os números que parecem iguais parecem iguais:
Exemplo
var x = 500; var y = new Number(500); // (x == y) é verdadeiro, pois x e y têm valores iguais
ao usar ===
Após o operador de igualdade, os números que parecem iguais se tornam diferentes porque ===
Os operadores precisam de tipos e valores iguais.
Exemplo
var x = 500; var y = new Number(500); // (x === y) é falso, pois x e y têm tipos diferentes
Ainda pior. Os objetos não podem ser comparados:
Exemplo
var x = new Number(500); var y = new Number(500); // (x == y) é falso, pois os objetos não podem ser comparados
Os objetos JavaScript não podem ser comparados.
- Página Anterior Template de String do JS
- Próxima Página JS BigInt