Executando verificação de segurança...
5

O tipo BigInt em javascript

O que é BigInt?

O tipo BigInt é usados para representa valores inteiros que são muito grandes para serem representados pelo tipo Number, até porque números inteiros no JavaScript só são precisos apenas até 15 dígitos:

Exemplo 1

const impreciso = 9999999999999999; // 16 dígitos
console.log(a); // 10000000000000000

Exemplo 2

const x = 9007199254740991 + 1;
const y = 9007199254740991; // Number.MAX_SAFE_INTEGER

console.log(x === y); // true

Porque existe essa imprecisão?

Em JavaScript, todos os números são armazenados em um formato de ponto flutuante de 64 bits, então número inteiros grandes demais não podem ser representantados com exatidão, então eles são arredondados.

Por causa disso, o JavaScript só pode representar números inteiros com segurança de 9007199254740991 até -9007199254740991, valores inteiros fora desse intervalo perdem a precisão.

Tá mais como cria um BigInt?

Para criar um BigInt, basta colocar um n no final de um número inteiro ou apenas chame o construtor BigInt()

const numeros = 99999999999999999999999n; // 99999999999999999999999n
const construtor = BigInt("99999999999999999999999"); // 99999999999999999999999n

typeof numeros // bigint
typeof construtor // bigint

Operações com BigInt

Os valores do tipo BigInt, também podem usar operadores aritméticos e operadores bit a bit

const num1 = BigInt(999999999999999);
const num2 = BigInt(111111111111111);

num1 + num2; // 1111111111111110
num1 - num2; // 888888888888888
num1 * num2; // 1111111111111110888888888888888989
num1 / num2; // 9
num1 % num2; // 0
num1 ** num2; // 18446744073709551616

vale a pena lembrar que o operador unario + e o operador >>> não são suportados

Agradecimentos

Obrigado por ler até aqui ❤️, acredito que apenas isso já é o suficiente, caso tenha algo a mais, me diga nos comentários para eu adicionar.

Fontes

Documentação Oficial, w3schools, Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER