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.