Números

Um valor numérico é composto por qualquer série de caracteres numéricos, por exemplo:

5

O tipo de dados numérico também inclui algumas propriedades globais especiais que representam conceitos numéricos, como Infinity e NaN, um valor que significa "não é um número", um possível resultado da tentativa de realizar operações matemáticas cálculos em valores não numéricos.

O objeto numérico

Quando um valor é transmitido para a função Number(), esse valor é convertido em o número equivalente. Por exemplo, uma string numérica resulta em um valor número primitivo:

Number( "10" );
> 10

Transmitir um valor false ou null para Number() retorna 0, e true retorna. 1.

Number( null );
> 0

Number( false );
> 0

Number( true );
> 1`

Se não for possível converter um valor, como no caso de undefined ou uma string contendo caracteres não numéricos, a função Number retornará NaN:

Number( undefined );
> NaN

Number( "The number 3." );
> NaN

Como detalhado em Herança de protótipos, você provavelmente terá pouca ou nenhuma razão para usar o objeto Number como uma construtor, porque cria um objeto Number em vez de um número literal.

let numObject = new Number( 15 );

numObject;
> Number { 15 }

Esse objeto se comporta como o valor atribuído a operações matemáticas, mas falha em comparações rigorosas de igualdade contra literais de números porque os tipos de dados não correspondem, sem fornecer qualquer benefício prático sobre um valor literal.

let tenObject = new Number( 10 );

tenObject + 5;
> 15

tenObject === 10;
> false

Flutuações e números inteiros

O JavaScript só tem um tipo de número: precisão dupla IEEE 754-1985 de 64 bits números de ponto flutuante entre -2^1024 e 2^1024. Antes que o JavaScript armazene um número na memória, converte esse número em um número de ponto flutuante binário, também chamado de flutuante.

Esse armazenamento de 64 bits (um bit de "sinal" positivo ou negativo, 11 bits para um expoente e 52 bits por uma fração) pode causar erros de precisão com qualquer de dígitos que não se encaixam em um intervalo permitido. Essa limitação é inerente ao tipo de dados numéricos do JavaScript.

0.1 + 0.7
> 0.7999999999999999

Um valor numérico pode ser armazenado como um número inteiro, um número de ponto flutuante. sem uma fração entre -(2^53 − 1) e 2^53 − 1. Como os pontos flutuantes e como números inteiros são armazenados da mesma maneira, não há diferença prática em como esses números operam. No entanto, recomendamos o uso de números inteiros possível para evitar erros de precisão.

Operadores numéricos

Quando você usa operadores matemáticos padrão com primitivas de números, a ordem matemática das operações aplicável: todas as expressões entre parênteses são avaliadas primeiro, seguidas por expoentes, multiplicação, divisão, adição e subtração.

Operador Nome Descrição Uso Resultado
+ Adição 2+2 4
- Subtração 4-2 2
* Multiplicação 2*5 10
/ Divisão 10/5 2
++ Incremento Adiciona um a um número 2++ 3
-- Redução Subtrai um de um número 3-- 2
** Expoente Retorna o resultado da criação da primeira
. operando à potência do segundo operando.
2**4 16
% Restante Retorna o restante que sobrou quando o
primeiro operando é dividido pelo segundo operando.
12%5 2

Também é possível usar operadores de atribuição matemática para realizar no valor de uma variável e imediatamente atribuir essa um valor recém-calculado à variável.

Operador Nome Uso
+= Atribuição de adição myValue += 2
-= Atribuição de subtração myValue -= 2
*= Atribuição de multiplicação myValue *= 2
/= Atribuição da divisão myValue /= 2
**= Atribuição do expoente myValue **= 2
%= Atribuição restante myValue %= 2

Valores simbólicos

O primitivo de número também se aplica a alguns casos especiais: o argumento "não é um número". (NaN) e um valor que representa o infinito que pode ser positivo (Infinity) ou negativa (-Infinity).

Você pode encontrar Infinity raramente como resultado da divisão por zero. Um caso em que a maioria das linguagens de programação gera um erro:

10 / 0
> Infinity

Lembre-se de que JavaScript diferencia maiúsculas de minúsculas. Infinity é um tipo de dados numérico que representam o conceito de infinito, mas infinity não tem um significado especial:

Infinity
> Infinity

infinity
> Uncaught ReferenceError: infinity is not defined

NaN (que significa "Não é um número") aparece com mais frequência, nos casos em que o resultado de uma operação aritmética não podem ser expressas como um número. Por exemplo, como o JavaScript tenta inferir tipo de dados a partir do valor e do contexto, um literal de string contendo apenas um número pode ser usado em uma operação matemática:

"2" * 2;
> 4

No entanto, se essa string não puder ser analisada como um valor numérico, a função resulta em um não número:

"two" * 2;
> NaN

NaN é retornado sempre que um valor inválido é representado como um número. em uma operação matemática. Os exemplos incluem:

  • Número de conversões com falha (por exemplo, parseInt( undefined ))
  • Operações aritméticas em que o resultado não é um número real (por exemplo, 0 / 0 e Math.sqrt( -10 )).
  • Uma operação aritmética com um resultado indeterminado (0 * Infinity)
  • Uma operação aritmética que inclui um NaN explícito (NaN + 2) ou um resultado de NaN (2 * "string" / 2)

Teste seu conhecimento

Qual é o resultado da transmissão de false para Number()?

Falso
0
1
NaN

Qual é o resultado da seguinte operação matemática?

"Six" * 3

NaN
Verdadeiro
18
0
2