Representações numéricas no JavaScript

Números / Tutorial 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:

TipoDescriçãoExemplo
numberNúmeros de ponto flutuante (decimais).5, 3.14, -10
bigintInteiros grandes.10n, -123n
NaNRepresenta resultados não numéricos.0 / 0, Math.sqrt(-1)
InfinityRepresenta infinito positivo.1 / 0
-InfinityRepresenta 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 tipo number. Ele é identificado pelo sufixo n (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, como 0 / 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

  1. Evite misturar number e bigint: 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
    
  2. Cuidado com imprecisões em number: Para cálculos financeiros ou que exigem alta precisão, considere bibliotecas especializadas ou bigint (se aplicável).

    console.log(0.1 + 0.2); // Resultado: 0.30000000000000004
    
  3. Verifique valores inválidos: Use Number.isNaN para identificar NaN 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.