Número do JavaScript

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

Experimente você mesmo

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

Experimente você mesmo

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

Experimente você mesmo

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

Experimente você mesmo

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

Experimente você mesmo

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)

Experimente você mesmo

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)

Experimente você mesmo

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)

Experimente você mesmo

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)

Experimente você mesmo

Um erro comum é acreditar que o resultado deve ser 30:

Exemplo

var x = 10;
var y = 20;
var z = "The result is: " + x + y;

Experimente você mesmo

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;

Experimente você mesmo

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

Experimente você mesmo

Esse exemplo também funcionará assim:

var x = "100";
var y = "10";
var z = x * y;       // z será 1000

Experimente você mesmo

Esse exemplo funcionará assim:

var x = "100";
var y = "10";
var z = x - y;      // z será 90

Experimente você mesmo

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)

Experimente você mesmo

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)

Experimente você mesmo

No entanto, se a string contiver um número, o resultado será um número:

Exemplo

var x = 100 / "10";     // x será 10

Experimente você mesmo

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

Experimente você mesmo

a fim de ser cuidadoso NaN。Cuidado se você usar NaNentão o resultado também será NaN:

Exemplo

var x = NaN;
var y = 5;
var z = x + y;         // z será NaN

Experimente você mesmo

o resultado pode ser concatenado:

Exemplo

var x = NaN;
var y = "5";
var z = x + y;         // z será NaN5

Experimente você mesmo

NaN é um número,typeof NaN retorna number:

Exemplo

typeof NaN;             // retorna "number"

Experimente você mesmo

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;
}

Experimente você mesmo

Dividir por 0 (zero) também gera Infinity:

Exemplo

var x =  2 / 0;          // x será Infinity
var y = -2 / 0;          // y será -Infinity

Experimente você mesmo

Infinity é um número:typeOf Infinity retorna number.

Exemplo

typeof Infinity;        // retorna "number"

Experimente você mesmo

hexadecimal

O JavaScript retorna valores com prefixo 0x Os constantes numéricos são interpretados como hexadecimal.

Exemplo

var x = 0xFF;             // x será 255.

Experimente você mesmo

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

Experimente você mesmo

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

Experimente você mesmo

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

Experimente você mesmo

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

Experimente você mesmo

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

Experimente você mesmo

Os objetos JavaScript não podem ser comparados.