JavaScript BigInt

JavaScript BigInt

How to Handle Big Numbers Without Losing Your Mind 🚀

You’re coding in JavaScript.
Everything is going fine.
Then a number grows…
And JS goes like:

“I’m rounding everything past here, good luck!”

That’s when BigInt steps in and says:

“Okay okay, this time I’m serious.” 🎩


1️⃣ What Are Numbers in JavaScript, Anyway?

JavaScript has only one number type:

Number

But this number type:

  • Holds integers, decimals, negatives—all in one bucket
  • Works according to the IEEE 754 standard
  • So… not every integer is 100% safe

The safe limit:

Number.MAX_SAFE_INTEGER

Output:

9007199254740991

JS basically says:

“I promise accuracy up to this number. Beyond that… you’re on your own.”


2️⃣ How the “Rounding Disaster” Happens 🧪

Let’s experiment:

const max = Number.MAX_SAFE_INTEGER;

console.log(max + 1);
console.log(max + 2);

Output:

9007199254740992
9007199254740992

😐
Two different operations, same result.

Why?

  • JS stores numbers in binary
  • For huge numbers, bits aren’t enough
  • Precision is lost

It’s like:

trying to store a 4K video on a floppy disk.


3️⃣ Enter BigInt 🎩

BigInt gives JavaScript:

  • Real integer math
  • No rounding
  • No drift
  • No “approximately” nonsense

4️⃣ How to Write BigInt (Super Easy)

Method 1: n suffix

const ageOfUniverse = 13800000000n;

The n says:

“This number is not normal—it’s a BigInt.”

Method 2: BigInt() constructor

const hugeId = BigInt("123456789123456789123456789");

💡 Tip: Using a string is safe because
JS won’t accidentally change the number.


5️⃣ Adding, Subtracting, Multiplying BigInt 🧮

const a = 999999999999999999n;
const b = 1n;

console.log(a + b);

Output:

1000000000000000000n

Explanation:

  • Both numbers are BigInt
  • JS doesn’t ask: “Should I round?”
  • It just calculates

Multiplication:

10n * 20n
// 200n

Subtraction:

100n - 30n
// 70n


6️⃣ The Big Trap: Number + BigInt ❌

10n + 5

🚨 TypeError

JS says:

“One of you is an apple, the other is a pear. I won’t add you.”

Correct ways:

10n + 5n
// or
10n + BigInt(5)

💡 Golden rule: Use the same type for all math.


7️⃣ Division: BigInt’s Least Favorite Thing 😅

10n / 3n

Output:

3n

Remainder?

  • Doesn’t exist
  • JS doesn’t care

BigInt says:

“I’m an integer. No decimals for me.”

If you need decimals:

Number(10n) / 3

⚠️ Warning: You just left the BigInt world.


8️⃣ Comparisons (Don’t Be Surprised)

10n > 5
// true

Works fine 👍

But:

10n === 10
// false

Reason:

  • Different types
10n == 10
// true (but don’t rely on it)

💡 Tip: Use === for simplicity.


9️⃣ BigInt and JSON ⚠️

JSON.stringify(10n);

💥 Error!

JSON:

  • Does not know BigInt
  • Only knows Number

Solution:

JSON.stringify({
  value: 10n.toString()
});

📌 Convert to string for network, API, or DB use.


🔟 Where BigInt Shines in Real Life

🏦 Finance

const totalMoney = 999999999999999999n;

🔐 Cryptography

const privateKey = BigInt("0x123456789ABCDEF");

🧾 Huge IDs

const userId = 987654321987654321n;

No errors allowed here—BigInt shines


1️⃣1️⃣ Performance Warning 🚦

BigInt:

  • Powerful 💪
  • But slow 🐢

For small calculations:

“Number is enough, my friend.”

Keep BigInt for really large numbers only.


1️⃣2️⃣ Mini Tips (Gold Nuggets)

💡 Math object won’t work

Math.sqrt(10n); // ❌

💡 parseInt doesn’t work

parseInt(10n); // ❌

💡 Binary & Hex supported

0b101010101010101010101n


🎯 Summary (For Skimmers 😄)

  • Number → fast but limited
  • BigInt → slow but reliable
  • Don’t mix ❌
  • Big numbers = BigInt ✅

Last words:

“JavaScript doesn’t mess around with numbers…
but if you cross the safe boundary, it won’t take you seriously either.” 😄

Comments

No comments yet. Why don’t you start the discussion?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir