> For the complete documentation index, see [llms.txt](https://choubey.gitbook.io/javascript-interview-questions/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://choubey.gitbook.io/javascript-interview-questions/question-15.md).

# Question 15

### Question

Can you explain how JavaScript handles big integers internally?

### Answer

Here's a breakdown of how JavaScript manages large integers:

1. **IEEE-754 Standard:** JavaScript uses the IEEE-754 standard for representing floating-point numbers (which includes decimals). This standard works well for most everyday calculations, but it has limitations when dealing with very large whole numbers.
2. **JavaScript's Number Type:** By default, `Number` in JavaScript only supports a finite precision. The exact number of bits used varies depending on the environment, but it's limited enough that extremely large integers will result in rounding errors or overflow.
3. **BigInts to the Rescue!**

   * Introduced in ECMAScript 2020 (ES2020), `BigInt` provides a way to work with arbitrarily large whole numbers without these limitations.
   * **Notation:** You create a BigInt by appending an "n" after the number, e.g., `12345678901234567890n`.

   ```javascript
   const hugeNumber = 12345678901234567890n;
   console.log(hugeNumber); // Outputs the BigInt directly
   ```

   * **Arithmetic:** You can perform standard arithmetic operations (+, -, \*, /) with BigInts, ensuring accurate results for truly massive calculations.

   ```javascript
   const evenHuger = hugeNumber * 2n;
   console.log(evenHuger); //  Outputs the result of the BigInt multiplication
   ```

**Key Points to Remember:**

* Standard `Number` values in JavaScript have a limited precision, unsuitable for very large integers.
* Use `BigInt` when you need to work with arbitrarily large whole numbers without rounding errors or overflow.
