Проверяет понимание различий между типами BigInt и Number в JavaScript, включая ограничения точности и области применения.
В JavaScript тип Number основан на стандарте IEEE 754 и хранит числа как 64-битные значения с плавающей точкой. Это означает, что он может точно представлять целые числа только до 2^53 - 1 (около 9 квадриллионов). За этим пределом начинаются ошибки округления. Тип BigInt был добавлен в ES2020 для работы с целыми числами произвольной точности — он может хранить сколь угодно большие целые значения без потери точности.
BigInt создаётся добавлением суффикса n к числовому литералу или вызовом функции BigInt(). Операции с BigInt работают только с другими BigInt, смешивать их с Number нельзя без явного преобразования. Деление BigInt всегда возвращает целое число (отбрасывая дробную часть).
const big = 123456789012345678901234567890n;
const num = 123456789012345678901234567890;
console.log(big); // 123456789012345678901234567890n
console.log(num); // 1.2345678901234568e+29 (потеря точности)
// Арифметика
const a = 10n;
const b = 3n;
console.log(a / b); // 3n (целочисленное деление)
// Нельзя смешивать без преобразования
// console.log(a + 1); // TypeError
console.log(a + BigInt(1)); // 11nBigInt полезен в задачах, требующих высокой точности: криптография, работа с большими идентификаторами, финансовые расчёты с целыми числами, математические вычисления за пределами 2^53. Однако он не поддерживает дробные числа, поэтому для десятичных значений по-прежнему нужен Number или специальные библиотеки. Также BigInt медленнее Number и не работает с методами Math.
Используйте BigInt, когда нужны целые числа больше 2^53 - 1 или абсолютная точность целочисленных операций. Для обычных вычислений, особенно с дробями, оставайтесь на Number — он быстрее и универсальнее.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию