Skip to content

wavesplatform/bignumber

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

33 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

@waves/bignumber

A JavaScript library for arbitrary-precision decimal and non-decimal arithmetic.


Load

The library is the single JavaScript file bignumber.umd.js (or minified, bignumber.umd.min.js).

Browser:

<script src='path/to/bignumber.js'></script>

Node.js:

$ npm install @waves/bignumber
const { BigNumber } = require('@waves/bignumber');

ES6 module:

import { BigNumber } from "@waves/bignumber"

AMD loader libraries such as requireJS:

require(['@waves/bignumber'], function(BigNumber) {
    // Use BigNumber here in local scope. No global BigNumber.
});

Use

let x = new BigNumber(123.4567);
let y = BigNumber('123456.7e-3');
let z = new BigNumber(x);
x.eq(y) && y.eq(z) && x.eq(z);      // true

To get the string value of a BigNumber use toString() or toFixed(). Using toFixed() prevents exponential notation being returned, no matter how large or small the value.

let x = new BigNumber('1111222233334444555566');
x.toString();                       // "1111222233334444555566"
x.toFixed();                        // "1111222233334444555566"
Clone

ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚

const some = new BigNumber(1);
const clone = some.clone();
Add

ВыполняСт слоТСниС

const bigNum = new BigNumber('100');
const result = bigNum.add('50'); // with method toFixed '150'
Sub

Π’Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅

const bigNum = new BigNumber('100');
const result = bigNum.sub('50'); // with method toFixed '50'
Mul

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅

const bigNum = new BigNumber('100');
const result = bigNum.mul(2); // with method toFixed '200'
Div

Π”Π΅Π»Π΅Π½ΠΈΠ΅

const bigNum = new BigNumber('100');
const result = bigNum.div(2); //  with method toFixed '50'
Pow

Π’ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ

const bigNum = new BigNumber('100');
const result = bigNum.pow(2); // with method toFixed '10000'
Sqrt

ΠšΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ€Π΅Π½ΡŒ

const bigNum = new BigNumber('100');
const result = bigNum.sqrt(); // with method toFixed '10'
Abs

ΠœΠΎΠ΄ΡƒΠ»ΡŒ

const bigNum = new BigNumber('-100');
const result = bigNum.abs(); // with method toFixed 100
Mod

ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ ΠΎΡ‚ дСлСния

const bigNum = new BigNumber('100');
const result = bigNum.mod(10); // with method toFixed '0' 
RoundTo

ΠžΠΊΡ€ΡƒΠ³Π»ΡΠ΅Ρ‚. ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ количСство Π·Π½Π°ΠΊΠΎΠ² послС запятой послС ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈ ΠΈ Ρ€Π΅ΠΆΠΈΠΌ округлСния см Ρ‚ΡƒΡ‚: http://mikemcl.github.io/bignumber.js/#constructor-properties

const bigNum = new BigNumber('100');
const result = bigNum.roundTo(); //
Eq

РавСнство

const bigNum = new BigNumber('100');
const result = bigNum.eq(100); // true
Lt

МСньшС

const bigNum = new BigNumber('100');
const result = bigNum.lt(); //
Gt

Π‘ΠΎΠ»ΡŒΡˆΠ΅

const bigNum = new BigNumber('100');
const result = bigNum.gt(); //
Lte

МСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ

const bigNum = new BigNumber('100');
const result = bigNum.lte(); //
Gte

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ

const bigNum = new BigNumber('100');
const result = bigNum.gte(); //
IsNaN

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ Π½Π° NaN

const bigNum = new BigNumber('100');
const result = bigNum.isNaN(); // false
IsFinite

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ Π½Π° Infinity (ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ)

const bigNum = new BigNumber('100');
const result = bigNum.isFinite(); //
IsZero

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ Π½Π° равСнство Π½ΡƒΠ»ΡŽ

const bigNum = new BigNumber('100');
const result = bigNum.isZero(); // false
IsPositive

Π‘ΠΎΠ»ΡŒΡˆΠ΅ нуля

const bigNum = new BigNumber('100');
const result = bigNum.isPositive(); // true
IsNegative

МСньшС нуля

const bigNum = new BigNumber('100');
const result = bigNum.isNegative(); // false
IsInt

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ Π»ΠΈ число

const bigNum = new BigNumber('100');
const result = bigNum.isInt(); //
GetDecimalsCount

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ количСство Π·Π°Π½ΠΊΠΎΠ² послС запятой Ρƒ числа

const bigNum = new BigNumber('100');
const result = bigNum.getDecimalsCount(); // 0
IsEven

Π§Π΅Ρ‚Π½ΠΎΠ΅

const bigNum = new BigNumber('100');
const result = bigNum.isEven(); // true
IsOdd

НС Ρ‡Ρ‘Ρ‚Π½ΠΎΠ΅

const bigNum = new BigNumber('100');
const result = bigNum.isOdd(); // false
ToBytes

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ число Π² Π±Π°ΠΉΡ‚Ρ‹ со Π·Π½Π°ΠΊΠΎΠΌ (8 Π±Π°ΠΉΡ‚). Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами.

const bigNum = new BigNumber('100');
const result = bigNum.toBytes();
ToFormat

Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ число Π² строковом эквивалСнтС c с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ настроСк форматирования. ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ количСство Π·Π½Π°ΠΊΠΎΠ² округлСния, Ρ€Π΅ΠΆΠΈΠΌ округлСния (ΠΊΠ°ΠΊ Π² roundTo) ΠΈ настройки Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π²Ρ‹Π²ΠΎΠ΄Π°.

const bigNum = new BigNumber('1000000.12312');
bigNum.toFormat(); // 1,000,000.12312 
bigNum.toFormat(2); // 1,000,000.12 
bigNum.toFormat(2); // 1,000,000.12 
bigNum.toFormat(2, 0); // 1,000,000.13 
bigNum.toFormat(2, 0, { groupSeparator: ' ' }); // 1 000 000.13 
ToFixed

Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ число Π² строковом эквивалСнтС. ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ количСство Π·Π½Π°ΠΊΠΎΠ² округлСния ΠΈ Ρ€Π΅ΠΆΠΈΠΌ округлСния (ΠΊΠ°ΠΊ Π² roundTo)

const bigNum = new BigNumber('100');
const result = bigNum.toFixed(); //
ToNumber

ΠŸΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ числу

const bigNum = new BigNumber('100');
const result = bigNum.toNumber(); //

Static Methods

fromBytes

Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ число ΠΈΠ· Π±Π°ΠΉΡ‚. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с 8 Π±Π°ΠΉΡ‚Π°ΠΌΠΈ.

const some = BigNumber.fromBytes(Uint8Array.from([1,2,3,4,5,6,7,8]));
max

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ любоС количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ наибольшСС число ΠΈΠ· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

BigNumber.max(1, '2', new BigNumber(4)); // with method toFixed '4'
min

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ любоС количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ наимСньшСС число ΠΈΠ· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

BigNumber.min(1, '2', new BigNumber(4)); // with method toFixed '1'
sum

ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ любоС количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², складываСт числа

BigNumber.min(1, '2', new BigNumber(4)); //with method toFixed '7'

About

Waves Lib for work with big number.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published