#22 BigInt en Javascript

BigInt

BigInt es un tipo de dato numérico que se introdujo en JavaScript para representar números enteros más grandes que el valor máximo que puede representar el tipo Number (2^53 – 1). BigInt permite trabajar con números enteros arbitrariamente grandes de forma precisa.

Cómo funciona BigInt

Puedes crear un BigInt añadiendo una n al final de un número entero o utilizando la función constructora BigInt():

let bigIntLiteral = 12345678901234567890n;
let bigIntConstructor = BigInt("12345678901234567890");
console.log(bigIntLiteral); // 12345678901234567890n
console.log(bigIntConstructor); // 12345678901234567890n

BigInt y otros tipos de datos

Cuando se trabaja con BigInt, es importante tener en cuenta que no se pueden mezclar operaciones aritméticas entre BigInt y otros tipos de datos como Number. Para realizar operaciones aritméticas con BigInt, todos los operandos deben ser BigInt. Intentar realizar una operación aritmética entre BigInt y otros tipos de datos, como Number, resultará en un error:

let bigInt = 1234567890123456789012345678901234567890n;
let num = 42;

// Esto arrojará un error
let resultado = bigInt + num;

Para realizar operaciones entre BigInt y otros tipos de datos, primero debes convertirlos al mismo tipo de dato. Por ejemplo, puedes convertir un Number a BigInt antes de realizar una operación aritmética:

let bigInt = 1234567890123456789012345678901234567890n;
let num = 42;
let resultado = bigInt + BigInt(num);
console.log(resultado); // 1234567890123456789012345678901234567932n

Ten en cuenta que al convertir números de punto flotante a BigInt, se perderá la parte decimal:

let numFlotante = 42.5;
let bigIntFlotante = BigInt(numFlotante);
console.log(bigIntFlotante); // 42n

En resumen, BigInt es un tipo de dato en JavaScript que permite trabajar con números enteros muy grandes. Sin embargo, no se pueden mezclar operaciones aritméticas entre BigInt y otros tipos de datos, como Number, por lo que es necesario convertir todos los operandos al mismo tipo antes de realizar operaciones aritméticas.

BigInt aplicado a diferentes tipos de datos

1. String: Si quieres convertir una cadena que representa un número entero a BigInt, puedes utilizar la función constructora BigInt():

let cadena = "12345678901234567890";
let bigInt = BigInt(cadena);
console.log(bigInt); // 12345678901234567890n

2. Number: Cuando se trabaja con números grandes que están más allá del límite seguro de enteros para el tipo Number, es necesario utilizar BigInt. No obstante, no se puede realizar una conversión directa de Number a BigInt usando operadores aritméticos comunes. En su lugar, se debe utilizar la función constructora BigInt():

let numero = 42;
let bigInt = BigInt(numero);
console.log(bigInt); // 42n

3. BigInt: BigInt es un tipo de dato en sí mismo y se utiliza para representar números enteros grandes. Puedes realizar operaciones aritméticas con BigInt, pero no se pueden mezclar con números normales en las operaciones. Las operaciones deben realizarse entre BigInts:

let bigInt1 = 12345678901234567890n;
let bigInt2 = 98765432109876543210n;
let suma = bigInt1 + bigInt2;
console.log(suma); // 111111111011111111100n

4. Boolean: No hay una conversión directa entre BigInt y booleanos. Si necesitas realizar una comparación, puedes hacerlo de manera explícita:

let bigInt = 42n;
console.log(bigInt == 42); // true
console.log(bigInt === 42); // false, porque BigInt y Number son tipos diferentes

5. Undefined y Null: No hay una conversión directa entre BigInt y los valores undefined y null. Si necesitas convertir un BigInt en un valor nulo o indefinido, tendrás que hacerlo de manera explícita.

6. Symbol: No hay una conversión directa entre BigInt y el tipo de dato Symbol. Los símbolos son utilizados para propósitos completamente diferentes en JavaScript y no se pueden convertir directamente en números enteros grandes.

7. Object: Puedes almacenar un BigInt como una propiedad en un objeto:

let bigObj = {myBigInt: 100000000000000000000000000000000000000000n}; 

//También puedes utilizar BigInt en una matriz:

let bigArr = [1n, 2n, 3n]; 

//Sin embargo, ten en cuenta que no puedes utilizar BigInt como clave en un objeto o en un mapa.
[mwai_chat]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *