Fixed point arithmetic with BigInt. Can be used for money or scientific calculations with known precision.
npm install fixed-pointInstall package npm install fixed-point or include minified script on page.
``js
import { FixedPoint } from 'fixed-point';
// Simple example: 0.3 - 0.2 = 0.1
console.log(new FixedPoint(0.3).sub(0.2).toString());
// Price with 30% discount, rounding benefiting the customer
FixedPoint.setRounding('floor');
console.log(new FixedPoint('99.95').mul(0.70).toFixed())
// Bitcoin fee with banker rounding: 1.0 BTC - 0.00005 BTC = 0.99995000 BTC
FixedPoint.setRounding('even');
FixedPoint.setPrecision(8);
console.log(new FixedPoint('1').sub('0.00005').toFixed() + ' BTC');
// Rounding mode for fast calculations
FixedPoint.setRounding('trunc');
FixedPoint.setPrecision(15);
console.log(new FixedPoint('3.14159265358979').mul('2'));
`
* new FixedPoint(string) - constructor from Stringnew FixedPoint(number)
* - constructor from Numbera.toString()
* - conversion to Stringa.toFixed()
* - conversion to StringFixedPoint.setPrecision(number)
* - set precision (2 decimal places is default)FixedPoint.setRounding(string)
* - set rounding ('trunc'|'floor'|'ceil'|'even'), 'even' is defaulta.add(b)
* - addition (exact)a.sub(b)
* - subtraction (exact)a.mul(b)
* - multiplication (rounded)a.div(b)
* - division (rounded)a.eq(b)
* - a == ba.ne(b)
* - a != ba.gt(b)
* - a > ba.ge(b)
* - a >= ba.lt(b)
* - a < ba.le(b)
* - a <= b`
> Status: alpha.