BigInt

Максимально возможное числовое значение, с которым JavaScript может правильно и корректно работать

Код
console.log(Number.MAX_SAFE_INTEGER);

Цитата
9007199254740991

Если для работы нужны числовые значения больше этого максимального, то нужно применять числовые данные с типом BigInt

Создаются они с помощью добавления буквы n в конце числа:

Код
const bigint = 172673427342844728574378939n;

Второй способ, с помощью встроенной команды:

Код
const someBigint = BigInt(1212616313462134723467384);

Особенности использования:

1. BigInt нельзя использовать с методами со встроенным объектом Math (Math.round(), Math.random() и т.д)

Код
console.log(Math.round(5n));

Цитата
TypeError: Cannot convert a BigInt value to a number

2. Нельзя смешивать в операциях BigInt и обычные числа

Код
console.log(5n + 1);

Цитата
TypeError: Cannot mix BigInt and other types, use explicit conversions

3. С BigInt нормально можно использовать сложение, умножение, вычитание, возведение в степень и деление с остатком (и все эти операции будут возвращать BigInt.

В случае с делением всегда будет возвращаться округлённый результат без дробной части:

Код
console.log(5n / 2n); // 2n

Также с этим типом данных будут работать и побитовые операторы.

Операторы сравнения будут также нормально работать, даже если использовать BigInt и обычные числа:

Код
console.log(5n > 2n); // true
console.log(5n > 20); // false

При нестрогом сравнении:

Код
console.log(2n == 2); // true

При строгом:

Код
console.log(2n === 2); // false

Как быть, если нужно сложить BigInt с обычным числом?

В таких случаях нужна явная конвертация типов данных.

Код
let bigint = 1n;
let number = 2;
console.log(bigint + BigInt(number)); // 3n
console.log(Number(bigint) + number); // 3

При конвертации BigInt в обычное число может возникнуть проблема: число может быть обрезано до допустимой границы максимального числового значения и результат будет не тот, на который вы рассчитывали.

Документация

Всего комментариев: 0

Имя *:
Email *:
Код *:
Хостинг от uCoz