Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как работать с очень большими целыми числами

Короткий ответ

Обычные числа точны только до 2 в степени 53. Для больших целых используйте BigInt — числа с суффиксом n:

console.log(9007199254740993);
console.log(String(9007199254740993n));

Результат:

9007199254740992
9007199254740993

Вычисления

Числа BigInt поддерживают обычные операторы, но оба операнда должны быть BigInt:

const big = 2n ** 64n;
 
console.log(big.toString());
console.log((big / 3n).toString());

Результат:

18446744073709551616
6148914691236517205

Из строки

Большие идентификаторы часто приходят строками. BigInt() превращает их в числа без потери цифр:

const id = BigInt('123456789012345678901');
 
console.log((id + 1n).toString());

Результат:

123456789012345678902

Частая ошибка

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

try {
  console.log(10n + 1);
} catch (error) {
  console.log(error.message);
}
 
console.log((10n + BigInt(1)).toString());

Результат:

Cannot mix BigInt and other types, use explicit conversions
11

Функции из этого ответа

  • BigInt — Целые числа любой длины — без потери точности.
  • Number.MAX_SAFE_INTEGER — Наибольшее целое число, которое хранится без потери точности.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.