Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що таке BigInt?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**`BigInt`** - це спеціальний тип даних у JavaScript, призначений для роботи з дуже великими цілими числами, які виходять за межі стандартного типу `Number`. **Ключове:** `BigInt` дозволяє працювати з цілими числами будь-якої довжини без втрати точності.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## Що таке 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 ``` --- ## Приклади використання 1. **Криптографія, хеші, великі ключі** ```javascript const key = 1234567890123456789012345678901234567890n; const mod = 99999999999999999999999999999999999n; console.log(key % mod); ``` 2. **Фінансові розрахунки, де потрібна точність** ```javascript const price = 10000000000000000000n; // точна сума без помилок округлення ``` 3. **Робота з дуже великими лічильниками** ```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 | потрібно приводити типи вручну | | Ділення | Лише цілочисельне |Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.