Що таке BigInt?
Що таке BigInt
BigInt - це спеціальний тип даних у JavaScript, який призначений для роботи з дуже великими цілими числами,
що виходять за межі стандартного типу Number.
Звичайні числа (Number) у JS зберігаються як 64-бітні значення IEEE-754,
і максимальне безпечне ціле число, яке можна точно представити, - це:
javascript
Number.MAX_SAFE_INTEGER; // 9007199254740991 (≈ 9 * 10^15)Якщо перевищити цю межу, JavaScript почне втрачати точність:
javascript
console.log(9007199254740991 + 1); // 9007199254740992 (правильно)
console.log(9007199254740991 + 2); // 9007199254740992 (помилка!)BigInt вирішує цю проблему
BigInt дозволяє працювати з цілими числами будь-якої довжини, без втрати точності:
javascript
const big = 9007199254740991n; // літерал BigInt (зверни увагу на 'n' у кінці)
console.log(big + 2n); // 9007199254740993nСуфікс n у кінці числа робить його BigInt.
Можна також створити через конструктор:
javascript
const big = BigInt("900719925474099312345678901234567890");Основні властивості BigInt
| Особливість | Приклад |
|---|---|
Створюється за допомогою n або BigInt() | 123n або BigInt(123) |
Підтримує арифметику (+, -, *, /, %) | 100n + 200n → 300n |
| Ділення - лише цілочисельне | 5n / 2n → 2n (залишок відкидається) |
Не можна змішувати зі звичайними числами (Number) напряму | 1n + 1 - помилка |
| Можна явно перетворити | Number(1n) або BigInt(1) |
| Працює з операторами порівняння | 2n > 1n |
Працює з ===, але не дорівнює Number | 1n === 1 → false |
Приклад помилки при змішуванні типів
javascript
const big = 10n;
const num = 5;
console.log(big + num); // TypeErrorПравильно:
javascript
console.log(big + BigInt(num)); // 15nабо
javascript
console.log(Number(big) + num); // 15Приклади використання
- Криптографія, хеші, великі ключі
javascript
const key = 1234567890123456789012345678901234567890n;
const mod = 99999999999999999999999999999999999n;
console.log(key % mod);- Фінансові розрахунки, де потрібна точність
javascript
const price = 10000000000000000000n; // точна сума без помилок округлення- Робота з дуже великими лічильниками
javascript
let counter = 0n;
for (let i = 0n; i < 1_000_000_000_000_000_000n; i++) {
counter++;
}Перевірка типу
javascript
typeof 123n; // "bigint"Підсумок
| Ключовий факт | Значення |
|---|---|
| Тип даних | bigint |
| Навіщо потрібен | Для роботи з цілими числами > Number.MAX_SAFE_INTEGER |
| Створення | 123n або BigInt(123) |
| Особливість | Повна точність, лише цілі |
| Несумісний з Number | потрібно приводити типи вручну |
| Ділення | Лише цілочисельне |
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.