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