Representações numéricas no JavaScript
O JavaScript possui dois tipos numéricos principais: number (número) e bigint (inteiro grande), além de valores especiais como NaN e Infinity.
Tipos numéricos
Os tipos numéricos no JavaScript podem ser classificados da seguinte forma:
| Tipo | Descrição | Exemplo |
|---|---|---|
number | Números de ponto flutuante (decimais). | 5, 3.14, -10 |
bigint | Inteiros grandes. | 10n, -123n |
NaN | Representa resultados não numéricos. | 0 / 0, Math.sqrt(-1) |
Infinity | Representa infinito positivo. | 1 / 0 |
-Infinity | Representa infinito negativo. | -1 / 0 |
Cada tipo possui características e usos específicos, que veremos em mais detalhes.
Detalhes sobre os tipos
number: É o tipo numérico mais comum no JavaScript. Ele representa números inteiros e de ponto flutuante, incluindo valores positivos, negativos e zero. No entanto, devido à sua representação binária, pode apresentar imprecisões em cálculos com números decimais.bigint: Introduzido no ECMAScript 2020, esse tipo é usado para representar números inteiros muito grandes, que excedem o limite do tiponumber. Ele é identificado pelo sufixon(por exemplo,1000n).NaN: Significa "Not-a-Number" e é retornado quando uma operação matemática não resulta em um número válido, como0 / 0.Infinitye-Infinity: Representam valores infinitos, geralmente resultantes de divisões por zero ou cálculos que excedem os limites numéricos.
Exemplos práticos
Trabalhando com number:
const a = 5;
const b = 3.14;
const c = a + b; // Resultado: 8.14
console.log(c);
Trabalhando com bigint:
const big = 123456789012345678901234567890n;
const anotherBig = 100000000000000000000000000000n;
const sum = big + anotherBig; // Resultado: 223456789012345678901234567890n
console.log(sum);
Lidando com NaN:
const invalid = Math.sqrt(-1); // Resultado: NaN
console.log(Number.isNaN(invalid)); // true
Lidando com Infinity:
const positiveInfinity = 1 / 0; // Resultado: Infinity
const negativeInfinity = -1 / 0; // Resultado: -Infinity
console.log(positiveInfinity, negativeInfinity);
Boas práticas
Evite misturar
numberebigint: Operações entre esses tipos não são permitidas e geram erros.const num = 10; const big = 10n; // console.log(num + big); // TypeError: Cannot mix BigInt and other typesCuidado com imprecisões em
number: Para cálculos financeiros ou que exigem alta precisão, considere bibliotecas especializadas oubigint(se aplicável).console.log(0.1 + 0.2); // Resultado: 0.30000000000000004Verifique valores inválidos: Use
Number.isNaNpara identificarNaNe evite comportamentos inesperados.
Conclusão
Ao realizar operações matemáticas, é importante estar ciente das limitações de cada tipo numérico. O tipo number é ideal para a maioria dos casos, mas pode apresentar imprecisões em cálculos com decimais. Já o tipo bigint é mais adequado para cálculos com números inteiros muito grandes, onde a precisão absoluta é necessária. Nos próximos capítulos, exploraremos cada tipo em mais detalhes.