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
.Infinity
e-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
number
ebigint
: 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 types
Cuidado 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.30000000000000004
Verifique valores inválidos: Use
Number.isNaN
para identificarNaN
e 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.