Клавиша / esc

Большое целое

В математике числа бесконечны, а в программировании — нет. Если число не влезает в стандартный number, то есть его старший брат.

Время чтения: меньше 5 мин

Кратко

Скопировано

Тип большого целого BigInt — примитивный тип, который представляет целые числа больше 253-1. Эти числа уже не помещаются в стандартный примитив «число».

Этот тип используют для работы с произвольно большими целыми числами: идентификаторами, криптографическими ключами и другими данными, где требуется высокая точность.

Как пишется

Скопировано

Создать BigInt можно двумя способами.

1️⃣ Добавить суффикс n в конец записи числа:

        
          
          const biggy = 9997000254740991n
          const biggy = 9997000254740991n

        
        
          
        
      

2️⃣ Вызвать конструктор BigInt:

        
          
          const alsoBig = BigInt(9997000254999999)
          const alsoBig = BigInt(9997000254999999)

        
        
          
        
      

BigInt поддерживает, например, операции сложения +, вычитания -, умножения *, взятия остатка от деления %, возведения в степень **.

Операция деления / также работает, но дробная часть отбросится:

        
          
          const seven = 7nconst five = 5nconsole.log(seven / five)// 1
          const seven = 7n
const five = 5n

console.log(seven / five)
// 1

        
        
          
        
      

Преобразование типов

Скопировано

В операциях BigInt невозможно использовать напрямую с обычными числами типа number: это приведёт к ошибке.

        
          
          const biggy = 10nconst number = 5console.log(biggy + number)// Uncaught TypeError: Cannot mix BigInt and other types,// use explicit conversions
          const biggy = 10n
const number = 5

console.log(biggy + number)
// Uncaught TypeError: Cannot mix BigInt and other types,
// use explicit conversions

        
        
          
        
      

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

        
          
          const biggy = 10nconst number = 5console.log(biggy + BigInt(number))// 15nconsole.log(Number(biggy) + number)// 15
          const biggy = 10n
const number = 5

console.log(biggy + BigInt(number))
// 15n

console.log(Number(biggy) + number)
// 15

        
        
          
        
      

Ограничения

Скопировано

Нет поддержки дробных чисел. BigInt работает только с целыми числами. Дробные числа нельзя использовать с этим типом данных.

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

В BigInt не поддерживаются операции унарного плюса и сдвига битов вправо.

Подсказки

Скопировано

💡 Используйте BigInt, когда работаете с числами, которые превышают максимальное безопасное целое значение в JavaScript — 253-1.

💡 Продолжайте использовать тип number для стандартных вычислений с небольшими числами. Этот тип занимает меньше памяти и более эффективен в операциях.

💡 Проверяйте поддержку BigInt в средах, где используется ваш код. Так избежите неожиданных ошибок.