BigInt()
BigInt - это отдельный тип данных для работы с большими целыми числами.
let value = 9007199254740993n;
console.log(value);
console.log(typeof value);
Результат:
9007199254740993n
bigint
Буква n в конце показывает, что перед нами не обычное число, а значение типа bigint.
Что такое BigInt
Обычный тип number подходит для большинства вычислений. Но у него есть ограничение: очень большие целые числа могут храниться неточно.
console.log(Number.MAX_SAFE_INTEGER);
Результат:
9007199254740991
Если нужно работать с целыми числами больше этого значения, можно использовать BigInt.
Синтаксис
Создать bigint можно двумя способами. Первый способ - добавить n в конец целого числа.
let id = 12345678901234567890n;
Второй способ - вызвать функцию BigInt().
let id = BigInt('12345678901234567890');
console.log(id);
Результат:
12345678901234567890n
Литералы с n
Если число известно прямо в коде, чаще всего удобнее записать его с суффиксом n.
let views = 1000000000000000000n;
console.log(views);
Результат:
1000000000000000000n
Такой способ работает только с целыми числами. Дробные значения для BigInt не подходят.
Преобразование в BigInt
BigInt() можно использовать, когда значение пришло строкой или обычным целым числом.
let value = '5000';
let bigValue = BigInt(value);
console.log(bigValue);
Результат:
5000n
Строка должна содержать целое число. Например, строка ‘10.5’ не подойдет, потому что в ней есть дробная часть.
Операции с BigInt
С bigint можно выполнять обычные арифметические операции, если оба значения имеют тип bigint.
console.log(10n + 5n);
console.log(10n * 2n);
console.log(10n / 3n);
Результат:
15n
20n
3n
При делении результат тоже остается целым. Дробная часть отбрасывается.
BigInt и Number
bigint нельзя смешивать с обычными числами в арифметике.
let value = 10n;
let count = 2;
// Так нельзя:
// console.log(value + count);
Чтобы выполнить операцию, нужно привести значения к одному типу.
let value = 10n;
let count = 2;
console.log(value + BigInt(count));
Результат:
12n
Если нужно получить обычное число, можно использовать Number(). Но для очень больших значений так делать опасно: точность может потеряться.
Итого
BigInt нужен для больших целых чисел, которые могут не помещаться в безопасный диапазон обычного number.
let value = 100n;
let otherValue = BigInt('100');
Используйте BigInt, когда важна точность больших целых чисел. Для обычных вычислений, где не нужны огромные целые числа, обычно достаточно типа number.