JavaScript BigInt — цілі числа без обмеження точності


BigInt зберігає цілі числа будь-якого розміру — більші за межу, після якої звичайний Number починає брехати.

автор: NagarD

Загальний опис

Звичайні числа в JavaScript — це числа з рухомою комою подвійної точності, і цілі вони зберігають точно лише до 9007199254740991 (Number.MAX_SAFE_INTEGER). Далі починається тихе безумство: 9007199254740993 дорівнює 9007199254740992, а рівність двох різних чисел раптом стає true.

Це не теорія: id у Twitter і Discord, суми в копійках, мітки часу в наносекундах — усе це виходить за межу.

BigInt створюють літералом із суфіксом n (123n) або функцією BigInt(123). Точність — необмежена, обмежує лише пам'ять.

автор: NagarD

Нотатка

BigInt не змішується з Number в арифметиці — 1n + 1 кидає TypeError. Це навмисно: мовчазне перетворення повернуло б утрату точності, від якої BigInt і рятує.

автор: NagarD

Синтаксис

const big = 9007199254740993n;

методи

Метод Опис
toString Рядкове подання числа в заданій системі числення.
asIntN Обрізає BigInt до знакового числа з N біт.
asUintN Обрізає BigInt до беззнакового числа з N біт.

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
BigInt 67+ 68+ 14+ 54+ 79+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
BigInt 67+ yes yes 14+

Приклади

+ запропонувати свій приклад у пісочниці

Межа точності Number і як її оминає BigInt.

console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991

// звичайне число тут уже бреше
console.log(9007199254740993 === 9007199254740992); // true (!)

const big = 9007199254740993n;
console.log(big + 1n); // 9007199254740994n — точно

// змішувати не можна
// console.log(big + 1); // TypeError
console.log(big + BigInt(1)); // так правильно

// порівняння працює, бо не втрачає точності
console.log(10n > 5); // true
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід