Изучаем BigInt в JavaScript
Работаем с огромными числами без потери точности
BigInt — это тип, который позволяет безопасно работать с большими целочисленными значениями. Наибольшее число, которое JavaScript может надежно представить с помощью примитива Number, — это 2^53 – 1, выраженное константой MAX_SAFE_INTEGER.
В отличие от стандартного типа Number, BigInt способен представлять целые числа с произвольной точностью, что позволяет избежать проблем при работе с очень большими числами.
Чтобы создать BigInt, добавьте n в конец целочисленного литерала или используйте функцию BigInt():
const hugeNumber = 9007199254740991n; // BigInt
const anotherHugeNumber = BigInt("9007199254740991"); // также BigInt
let regularNumber = 9007199254740992; // это максимальное целое число в JavaScript
console.log(regularNumber); // Вывод: 9007199254740992
console.log(regularNumber + 1); // Вывод: 9007199254740992
(потеря точности)
let bigIntNumber = BigInt("9007199254740992000"); // используем строку для создания BigInt
console.log(bigIntNumber); // Вывод: 9007199254740992000n
console.log(bigIntNumber + 1n); // Вывод: 9007199254740992001n
(без потери точности)
- Когда вам нужно работать с очень большими числами, которые не помещаются в обычные числовые типы (например факториалы, числа Фибоначчи, большие простые числа).
const result = factorial(1000n); // очень большое число!
const transactions = [1097857843333489700n, 297678444489000n, 506553670n, 1507899978870n]; // большие суммы
const totalAmount = transactions.reduce((sum, amount) => sum + amount, 0n);