Максимально возможное числовое значение, с которым JavaScript может правильно и корректно работать
Код
console.log(Number.MAX_SAFE_INTEGER);
Если для работы нужны числовые значения больше этого максимального, то нужно применять числовые данные с типом
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 и обычные числа
Цитата
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