Ответ
BigInt — это встроенный объект в JavaScript, который позволяет работать с целыми числами произвольной длины. Он решает проблему ограничения числа Number (2^53 - 1) и поддерживает операции с очень большими числами.
Пример:
const bigNum = 9007199254740991n; // Литерал BigInt (добавляется 'n')
const hugeString = BigInt("123456789012345678901234567890"); // Создание из строки
console.log(bigNum + 1n); // 9007199254740992n
Особенности:
- Нельзя смешивать с обычными числами в операциях
- Поддерживает все стандартные математические операции
- Не теряет точность при работе с большими значениями
- Нельзя использовать с
Mathметодами
Ответ 18+ 🔞
Вот ты сидишь, пишешь на JS, всё пучком. Числа складываешь, вычитаешь, и тут — бац! — 9007199254740991 + 1 тебе выдаёт какую-то хуйню, а не 9007199254740992. Удивление пиздец! А всё потому, что у обычного Number есть свой потолок, этот... как его... 2^53 - 1. Дальше — пиздец, точность теряется, всё, приехали.
И тут, как чёрт из табакерки, выскакивает BigInt. Объект, блядь, встроенный! Спасение для тех, кому нужно считать дохуя. До овердохуища, понимаешь? До миллиарда миллиардов, и хоть бы хны.
Создать его — проще пареной репы. Либо суффикс n к цифре прилепить, либо строку в конструктор запихнуть — он всё схавает.
const bigNum = 9007199254740991n; // Видишь 'n' на конце? Это он, красавец!
const hugeString = BigInt("123456789012345678901234567890"); // Из строки, блядь, хоть всю телефонную книгу впихивай
console.log(bigNum + 1n); // 9007199254740992n — и никакого геморроя!
Но есть, конечно, свои тараканы. Главный — нельзя их в одном котле мешать. Нельзя взять BigInt и приплюсовать к нему обычный Number. Вывалит тебе ошибку, типа «эй, мудак, определись уже». Либо все числа делай BigInt, либо все Number. Арифметика вся работает — плюс, минус, умножить, ебашить в степень. Только методы Math с ним не дружат, они для мелко-пузатых Number заточены.
Короче, если работаешь с деньгами, криптой или просто с астрономическими цифрами — это твой выход. Чтобы не охуеть потом от потери копеек на округлении.