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
eMath.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 deNaN
(2 * "string" / 2
)
Teste seu conhecimento
Qual é o resultado da transmissão de false
para Number()
?
Qual é o resultado da seguinte operação matemática?
"Six" * 3