0.8.0 • Published 4 years ago
fixed-point v0.8.0
🗿 fixed-point
Fixed point arithmetic with BigInt. Minimalistic library that can be used for money or scientific calculations with known precision.
Examples
Install package npm install fixed-point or include minified script on page.
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'));API
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.
2do
- constructors, toString/toFixed
- operations: +|-|*|/
- 4 rounding modes from IEEE 754-1985: RN, RZ, RU, RD
- testing rounding modes with table
- get feedback
- add benchmark
- add precision conversion: x.xxxxxxxx BTC in xx.xx $
- add build with BigInt polyfill
0.8.0
4 years ago