Перейти к содержанию
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
Логотип бренда
Категории
  1. Главная
  2. Категории
  3. Языки программирования
  4. JavaScript
  5. BigInt в JavaScript: как работать с большими числами

BigInt в JavaScript: как работать с большими числами

Запланировано Прикреплена Закрыта Перенесена JavaScript
javascript
1 Сообщения 1 Постеры 14 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • evoE Не в сети
    evoE Не в сети
    evo
    javascript
    написал отредактировано evo
    #1

    BigInt — это специальный числовой тип в JavaScript, который позволяет работать с очень большими целыми числами, больше, чем Number.MAX_SAFE_INTEGER.


    Почему нужен BigInt?

    Обычные числа (number) в JavaScript — это 64-битные дроби по стандарту IEEE-754.
    Они точны только до:

    Number.MAX_SAFE_INTEGER // 9007199254740991 (≈9 квадриллионов)
    

    Если число больше — оно может потерять точность:

    console.log(9007199254740992 + 1); // 9007199254740992 ❌ (не изменилось!)
    

    👉 Вот тут и пригодится BigInt.


    Как создать BigInt?

    Добавь n в конце числа:

    let big = 1234567890123456789012345n;
    

    Или через функцию BigInt():

    let big = BigInt("1234567890123456789012345");
    

    Как привести number в BigInt?

    Используй функцию BigInt():

    let num = 42;
    let big = BigInt(num); // 42n
    

    ⚠️ Нельзя приводить дробные числа:

    BigInt(3.14); // Ошибка! Дроби не поддерживаются
    

    Как привести BigInt обратно в number?

    Используй Number():

    let big = 100n;
    let num = Number(big); // 100
    

    ⚠️ Осторожно! Если BigInt слишком большой — потеряешь точность:

    let big = 9007199254740992n;
    let num = Number(big); // 9007199254740992 — может выглядеть нормально,
                           // но уже за пределами безопасной зоны
    

    👉 Преобразование в number — рискованно, если число огромное.


    Ограничения и особенности BigInt

    Особенность Что нужно знать
    Только целые числа Дробные не поддерживаются: 1.5n → ошибка
    Не работает с Math Math.sqrt(), Math.random() и др. — не работают с BigInt
    Нельзя смешивать с number в операциях 10 + 5n → ошибка!
    Сравнения (<, >, ===) работают 5n < 10 → true, 5n === 5 → false
    typeof возвращает "bigint" typeof 5n → "bigint"

    Примеры работы:

    let a = 10n;
    let b = 20n;
    
    console.log(a + b); // 30n
    console.log(b - a); // 10n
    console.log(a * 3n); // 30n
    console.log(a < 15); // true
    
    // ❌ Ошибка:
    // console.log(a + 5); // нельзя складывать bigint и number
    

    👉 Сначала приведи к одному типу (но аккуратно!):

    console.log(a + BigInt(5)); // 15n ✅
    console.log(Number(a) + 5); // 15 ✅ (но может быть потеря точности)
    

    Когда использовать BigInt?

    • При работе с очень большими числами: криптография, ID, научные расчёты
    • Когда важна абсолютная точность для целых чисел
    • В библиотеках, где числа выходят за пределы MAX_SAFE_INTEGER

    Итог:

    Что Как
    Создать BigInt 123n или BigInt(123)
    number → BigInt BigInt(num) (только целые!)
    BigInt → number Number(big) — с риском потери точности
    Операции Только с другими BigInt
    Ограничения Нет дробей, нет Math, нельзя смешивать с number

    💡 BigInt — мощный инструмент, но используй его только когда действительно нужно.
    Для обычных задач — хватит обычных чисел (number).

    1 ответ Последний ответ
    0
    • evoE evo переместил эту тему из Языки программирования

    • evoE

      Различия между Arrow Function, Function Declaration и Function Expression

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена JavaScript javascript
      1
      0 Голоса
      1 Сообщения
      6 Просмотры
      Нет ответов
    • evoE

      Где изучать TypeScript?

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена JavaScript javascript typescript
      1
      1
      0 Голоса
      1 Сообщения
      5 Просмотры
      Нет ответов
    • evoE

      Что такое функция замыкания в JavaScript

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена JavaScript javascript
      1
      0 Голоса
      1 Сообщения
      10 Просмотры
      Нет ответов
    • evoE

      Что такое массив в JavaScript и как использовать методы

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена JavaScript javascript
      1
      0 Голоса
      1 Сообщения
      13 Просмотры
      Нет ответов
    • evoE

      Объект Date в JavaScript — как с ним работать

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена JavaScript javascript
      1
      0 Голоса
      1 Сообщения
      10 Просмотры
      Нет ответов
    • evoE

      Методы регулярного выражения exec и test.

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена JavaScript javascript
      1
      0 Голоса
      1 Сообщения
      10 Просмотры
      Нет ответов
    • evoE

      Объяснение метода matchAll()

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена JavaScript javascript
      1
      0 Голоса
      1 Сообщения
      12 Просмотры
      Нет ответов
    • evoE

      Чем отличаются переменные var, let, const.

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена JavaScript javascript
      1
      1 Голоса
      1 Сообщения
      12 Просмотры
      Нет ответов

    Контакты

    • forum@eduity.ru

    © 2025 eduity.ru, Inc. Все права защищены.

    Политика конфиденциальности
    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Войдите или зарегистрируйтесь для поиска.
    • Первое сообщение
      Последнее сообщение
    0
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы