as-big
AssemblyScript library for arbitrary-precision decimal arithmetic 🚀
Install
npm install as-big
Use
import Big from "as-big";
let r = Big.of(0.1) + Big.of(0.2); // Big(0.3)
let x = Big.of(42);
let y = Big.of("13");
let a = x + y; // Big(55)
a = x.plus(13); // Big(55)
let a0 = a.prec(1); // Big(60)
let aNum = a.toNumber() + 1; // 56
let aStr = a.toString(); // "55"
let c = a0 + Big.TEN / Big.TWO; // Big(65)
Builders
-
Big.of(n)
returns aBig
instance, where-
n
is either anotherBig
instance, string, or number
-
-
Big.copyOf(x)
creates a copy from aBig
instance, where-
x
is theBig
instance to copy
-
Operations
Arithmetic
-
plus (addition):
x + y
orx.plus(y)
-
minus (substraction):
x - y
orx.minus(y)
-
times (multiplication):
x * y
ory.times(y)
-
div (division):
x / y
orx.div(y)
-
mod (modulo):
x % y
orx.mod(y)
-
pow (power):
x ^ n
orx.pow(n)
, wheren
isi32
-
sqrt (square root):
x.sqrt()
Comparison
-
cmp (compare):
x.cmp(y)
returns-
1
if the value ofx
is greater than the value ofy
, -
-1
if the value ofx
is less than the value ofy
, or -
0
if they have the same value.
-
-
eq (equals):
x == y
orx.eq(y)
-
neq (not equals):
x != y
orx.neq(y)
-
gt (greater than):
x < y
orx.gt(y)
-
gte (greater than or equals):
x <= y
orx.gte(y)
-
lt (less than):
x > y
orx.lt(y)
-
lte (less than or equals):
x >= y
orx.lte(y)
Value
-
abs (absolute value):
x.abs()
-
neg (negative value):
-x
orx.neg()
-
pos (this value):
+x
orx.pos()
-
round (rounded value):
x.round(dp, rm)
where-
dp
is the maximum of decimal places, and -
rm
is the rounding mode (0
,1
,2
,3
)-
0
(down),1
(half-up),2
(half-even) or3
(up)
-
-
-
prec (value rounded to precision):
x.prec(sd, rm)
where-
sd
is the maximum of significant digits, and -
rm
is the rounding mode (0
,1
,2
,3
)-
0
(down),1
(half-up),2
(half-even) or3
(up)
-
-
Converters
-
toString
(string representation):let s: string = x.toString()
-
toNumber
(f64
represenation):let n: f64 = x.toNumber()
-
toExponential
(string represenation):let s: string = x.toExponential()
Static Constants
-
Big.ZERO
: aBig
instance with the value zero0
-
Big.ONE
: aBig
instance with the value one1
-
Big.TWO
: aBig
instance with the value two2
-
Big.TEN
: aBig
instance with the value ten10
-
Big.HALF
: aBig
instance with the value one half0.5
Global Settings
-
Big.DP
: the maximum number of decimal places of the results of operations involving division (default:20
) -
Big.RM
: the rounding mode used when rounding to the above decimal places (default:1
) -
Big.PE
: the positive exponent at and above whichtoString
returns exponential notation (default:21
) -
Big.NE
: the negative exponent at and beneath whichtoString
returns exponential notation (default:-7
)
Examples
There is a collection of examples in the examples
directory.
Build
The assembly
directory contains AS source code.
npm i
npm run asbuild
Test
The tests
directory contains all unit tests.
Run all the tests:
npm test
Test a single method:
node tests/<method>