Skip to main content

大数处理


npm install jsbi --save
yarn add jsbi

https://www.npmjs.com/package/jsbi

Operationnative BigIntsJSBI
Creation from Stringa = BigInt('456')a = JSBI.BigInt('456')
Creation from Numbera = BigInt(789)a = JSBI.BigInt(789)
Conversion to Stringa.toString(radix)a.toString(radix)
Conversion to NumberNumber(a)JSBI.toNumber(a)
TruncationBigInt.asIntN(64, a)JSBI.asIntN(64, a)
BigInt.asUintN(64, a)JSBI.asUintN(64, a)
Type checktypeof a === 'bigint'a instanceof JSBI
Operationnative BigIntsJSBI
Additionc = a + bc = JSBI.add(a, b)
Subtractionc = a - bc = JSBI.subtract(a, b)
Multiplicationc = a * bc = JSBI.multiply(a, b)
Divisionc = a / bc = JSBI.divide(a, b)
Remainderc = a % bc = JSBI.remainder(a, b)
Exponentiationc = a ** bc = JSBI.exponentiate(a, b)
Negationb = -ab = JSBI.unaryMinus(a)
Bitwise negationb = ~ab = JSBI.bitwiseNot(a)
Left shiftingc = a << bc = JSBI.leftShift(a, b)
Right shiftingc = a >> bc = JSBI.signedRightShift(a, b)
Bitwise “and”c = a & bc = JSBI.bitwiseAnd(a, b)
Bitwise “or”c = a \| bc = JSBI.bitwiseOr(a, b)
Bitwise “xor”c = a ^ bc = JSBI.bitwiseXor(a, b)
Comparison to other BigIntsa === bJSBI.equal(a, b)
a !== bJSBI.notEqual(a, b)
a < bJSBI.lessThan(a, b)
a <= bJSBI.lessThanOrEqual(a, b)
a > bJSBI.greaterThan(a, b)
a >= bJSBI.greaterThanOrEqual(a, b)
Operationnative BigIntsJSBI
Abstract equality comparisonx == yJSBI.EQ(x, y)
Generic “not equal”x != yJSBI.NE(x, y)
Generic “less than”x < yJSBI.LT(x, y)
Generic “less than or equal”x <= yJSBI.LE(x, y)
Generic “greater than”x > yJSBI.GT(x, y)
Generic “greater than or equal”x >= yJSBI.GE(x, y)
Generic additionx + yJSBI.ADD(x, y)
Unsupported operationnative BigIntsJSBI
literalsa = 123n;N/A ☹
incrementa++N/A ☹
a + 1nJSBI.add(a, JSBI.BigInt('1'))
decrementa--N/A ☹
a - 1nJSBI.subtract(a, JSBI.BigInt('1'))
native BigInts/DataViewsJSBI
dv.getBigInt64(i, le)JSBI.DataViewGetBigInt64(dv, i, le)
dv.setBigInt64(i, x, le)JSBI.DataViewSetBigInt64(dv, i, x, le)
dv.getBigUint64(i, le)JSBI.DataViewGetBigUint64(dv, i, le)
dv.setBigUint64(i, x, le)JSBI.DataViewSetBigUint64(dv, i, x, le)