Описание

BigInt в jCjS — объектная обёртка над знаковым 64-битным целым числом qint64. Она сохраняет целое значение без потери точности, характерной для Number при выходе за безопасный целочисленный диапазон.

Назначение

Предназначен для точной работы со значениями от −2⁶³ до 2⁶³−1, передачи 64-битных идентификаторов, счётчиков и двоичных полей, а также для работы с BigInt64Array и DataView.

В отличие от стандартного BigInt, тип jCjS имеет фиксированную разрядность 64 бита и является объектом, а не примитивом произвольной точности. Серверный движок ES5 не поддерживает литералы 1n: создавайте значения из десятичных строк и выполняйте операции методами add(), sub() и другими, перечисленными ниже.


Конструктор

BigInt(value)
Функция вызывается без new. value — десятичная строка, Number, BigInt или BigUint. Для чисел за пределами безопасного диапазона Number обязательно используйте строку. Внутри строки допустим завершающий символ n, однако рекомендуемая переносимая форма — BigInt("123"). Вызов с new создаёт TypeError.

Пример использования

// В MDN это значение создаётся из строки, чтобы не потерять точность.
var hugeString = BigInt("9007199254740991");

// В ES5 jCjS арифметика выполняется методами объекта.
var nextValue = hugeString.add(BigInt("1"));
post.log('' + nextValue.toString()); // 9007199254740992


Свойства (property)

Сигнатура Описание
BigInt.ZERO, ONE, MIN, MAX Объекты-константы: ZERO = 0, ONE = 1, MIN = −9223372036854775808, MAX = 9223372036854775807. Свойства конструктора доступны только для чтения.
int BITS Разрядность значения: 64. Свойство конструктора, только чтение.
int BYTES Размер значения: 8 байт. Свойство конструктора, только чтение.


Сигналы

не имеет



Функции

Сигнатура Описание
bool isBigInt(value), bool isBigUint(value) Проверить, является ли аргумент объектом BigInt или BigUint jCjS. Методы доступны у конструктора и экземпляра.
BigInt add(value) Вернуть новое значение, равное сумме текущего значения и value.
BigInt sub(value) Вернуть разность текущего значения и value.
BigInt mul(value) Вернуть произведение текущего значения и value.
BigInt div(value) Выполнить целочисленное деление с отбрасыванием дробной части в направлении нуля. Деление на ноль создаёт RangeError.
BigInt mod(value) Вернуть остаток от целочисленного деления. Деление по модулю нуля создаёт RangeError.
BigInt shl(bits), BigInt shr(bits) Вернуть результат побитового сдвига влево или вправо на указанное число разрядов. Для отрицательных значений shr является знаковым сдвигом.
BigInt and(value), or(value), xor(value) Вернуть результат побитового И, ИЛИ либо исключающего ИЛИ.
BigInt not([value]) Инвертировать все 64 бита текущего значения; если передан value, инвертировать value.
bool eq(value), ne(value), lt(value), le(value), gt(value), ge(value) Сравнить текущее значение с value: равно, не равно, меньше, меньше либо равно, больше, больше либо равно.
String toString(int radix = 10) Вернуть строку в системе счисления radix от 2 до 36. При отсутствующем либо недопустимом radix используется основание 10.
Number|String valueOf() Вернуть Number, если значение представимо им точно; иначе вернуть десятичную строку.
QVariant toVariant() Вернуть QVariant, сохраняющий исходное знаковое 64-битное значение.
Number|String toJSON() Представить значение для JSON: точное Number либо десятичная строка для большого значения. Это отличается от стандартного BigInt, для которого JSON.stringify без специальной обработки создаёт ошибку.