JavaScript BigInt: Working with Large Integers

2 min read .

BigInt is a built-in JavaScript object that provides a way to represent and manipulate integers beyond the safe range for the Number type. With BigInt, you can handle extremely large numbers without losing precision, making it a valuable tool for various applications, from cryptography to scientific computations.

What is BigInt in JavaScript?

BigInt is a primitive data type that represents integers with arbitrary precision. Unlike the Number type, which has a maximum safe integer value (2^53 - 1), BigInt can represent numbers much larger (or smaller) than this limit.

Syntax:

To create a BigInt, you can either:

  • Append an n to the end of an integer literal.
  • Use the BigInt() function.
const bigNumber1 = 1234567890123456789012345678901234567890n; // Using 'n' suffix
const bigNumber2 = BigInt("1234567890123456789012345678901234567890"); // Using BigInt() function

Why Use BigInt?

  • Precision for Large Numbers: BigInt ensures precise calculations with large numbers, which is crucial in domains like cryptography and high-precision mathematics.
  • Overcoming Number Limitations: The Number type can only safely represent integers up to 2^53 - 1 (around 9 quadrillion). For applications requiring larger numbers, BigInt is the go-to solution.

How to Use BigInt in JavaScript

  1. Creating BigInt Numbers

You can create BigInt literals by appending n or by using the BigInt() constructor:

const bigIntLiteral = 9007199254740991n; // Literal
const bigIntConstructor = BigInt("9007199254740991"); // Constructor
  1. Basic Arithmetic Operations with BigInt

BigInt supports basic arithmetic operations like addition, subtraction, multiplication, and division:

const a = 12345678901234567890n;
const b = 98765432109876543210n;

const sum = a + b; // Addition
const difference = a - b; // Subtraction
const product = a * b; // Multiplication
const quotient = b / a; // Division (rounds towards zero)

console.log(sum); // Output: 111111111011111111100n
  1. Comparing BigInt Numbers

BigInt values can be compared using standard comparison operators:

const bigInt1 = 1000n;
const bigInt2 = 2000n;

console.log(bigInt1 < bigInt2); // Output: true
console.log(bigInt1 === 1000n); // Output: true
  1. Converting Between BigInt and Number

You can convert between BigInt and Number types, but be cautious about precision loss:

const bigIntValue = 12345678901234567890n;
const numberValue = Number(bigIntValue); // Converts to Number

console.log(numberValue); // Output: 12345678901234568000 (Precision loss)

To convert a Number to BigInt:

const num = 42;
const bigIntFromNumber = BigInt(num);

console.log(bigIntFromNumber); // Output: 42n

Key Considerations When Using BigInt

  • BigInt Cannot Be Mixed with Number: Arithmetic operations between BigInt and Number are not allowed directly. If needed, convert one type to the other explicitly.

    const bigIntVal = 10n;
    const numberVal = 20;
    
    // This will throw a TypeError
    // const result = bigIntVal + numberVal;
    
    // Convert before operation
    const correctResult = bigIntVal + BigInt(numberVal); // Works fine
    
  • Performance: Operations with BigInt are generally slower than with Number due to the arbitrary precision.

  • JSON Incompatibility: BigInt values cannot be serialized directly to JSON. Use toString() before serialization:

    const bigIntVal = 9007199254740991n;
    const jsonString = JSON.stringify({ value: bigIntVal.toString() });
    
    console.log(jsonString); // Output: '{"value":"9007199254740991"}'
    

When to Use BigInt?

  • Cryptography: Secure and precise handling of very large numbers is crucial.
  • Scientific Computation: For calculations requiring high precision and large values.
  • Financial Applications: To accurately represent large sums without precision loss.

Browser Compatibility

BigInt is widely supported in modern browsers, including Chrome (version 67+), Firefox (version 68+), Safari (version 14+), and Edge (version 79+). However, it is not supported in Internet Explorer, so consider compatibility needs before using it.

Conclusion

JavaScript’s BigInt provides a robust solution for working with large integers beyond the limitations of the Number type. Whether you’re handling big data, cryptography, or scientific computations, BigInt offers the precision and flexibility you need.

See Also

chevron-up