https://github.com/javiercejudo/linear-arbitrary-precision
Abstraction for linear functionality in big.js, bignumber.js, decimal.js and others via adapters.
https://github.com/javiercejudo/linear-arbitrary-precision
Last synced: 2 months ago
JSON representation
Abstraction for linear functionality in big.js, bignumber.js, decimal.js and others via adapters.
- Host: GitHub
- URL: https://github.com/javiercejudo/linear-arbitrary-precision
- Owner: javiercejudo
- License: mit
- Created: 2015-07-04T10:26:56.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2017-01-27T08:42:23.000Z (over 8 years ago)
- Last Synced: 2025-03-13T22:46:30.578Z (3 months ago)
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/linear-arbitrary-precision
- Size: 38.1 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# linear-arbitrary-precision
[](https://travis-ci.org/javiercejudo/linear-arbitrary-precision)
[](https://coveralls.io/r/javiercejudo/linear-arbitrary-precision?branch=master)
[](https://codeclimate.com/github/javiercejudo/linear-arbitrary-precision)Abstraction for linear functionality in
[big.js](https://github.com/MikeMcl/big.js),
[bignumber.js](https://github.com/MikeMcl/bignumber.js),
[decimal.js](https://github.com/MikeMcl/decimal.js)
and others via adapters.## Install
npm i linear-arbitrary-precision
## Usage
See [CodePen example](http://codepen.io/javiercejudo/pen/oXqGgZ?editors=101)
### Adapters
- [[adapter]](https://github.com/javiercejudo/linear-bigjs-adapter) [[lib]](https://github.com/javiercejudo/linear-big.js) linear-big.js
- [[adapter]](https://github.com/javiercejudo/bigjs-adapter) [[lib]](https://github.com/MikeMcl/big.js) big.js
- [[adapter]](https://github.com/javiercejudo/bignumberjs-adapter) [[lib]](https://github.com/MikeMcl/bignumber.js) bignumber.js
- [[adapter]](https://github.com/javiercejudo/decimaljs-adapter) [[lib]](https://github.com/MikeMcl/decimal.js) decimal.js
- [[adapter]](https://github.com/javiercejudo/bigdecimal-adapter) [[lib]](https://github.com/iriscouch/bigdecimal.js) bigdecimal.js
- [[adapter]](https://github.com/javiercejudo/floating-adapter) [[lib]](https://github.com/javiercejudo/floating) floating
- [[adapter]](https://github.com/javiercejudo/linear-converter-adapter) [[lib]](https://github.com/javiercejudo/linear-converter) linear-converter
- [[adapter]](https://github.com/javiercejudo/very-simple-statistics-adapter) [[lib]](https://github.com/sumanla13a/statistics-module) statistics-moduleSee [up to date list](https://www.npmjs.com/browse/keyword/linear-arbitrary-precision-adapter).
### Factory and configuration
```js
var decimalFactory = require('linear-arbitrary-precision');
var adapter = require('bigjs-adapter'); // See adapters section for full listvar Decimal = decimalFactory(adapter);
Decimal.getPrecision(); // => 20
new Decimal('1').div(new Decimal('3')).valueOf(); // => '0.33333333333333333333'
Decimal.setPrecision(5);
new Decimal('1').div(new Decimal('3')).valueOf(); // => '0.33333'
```### Operations
```js
new Decimal('0.1').plus(new Decimal('0.2')).valueOf(); // => '0.3'
new Decimal('0.3').minus(new Decimal('0.1')).valueOf(); // => '0.2'
new Decimal('0.6').times(new Decimal('3')).valueOf(); // => '1.8'
new Decimal('0.3').div(new Decimal('0.2')).valueOf(); // => '1.5'new Decimal('1').equals(new Decimal('1')); // => true
new Decimal('1').equals(new Decimal('2')); // => false
```### toString, valueOf and toJSON
```js
var decimalThird = new Decimal('1').div(new Decimal('3'));// with bigjs-adapter (other adapters might have differing implementations)
decimalThird.toString() === decimalThird.valueOf() === decimalThird.toJSON(); // => trueNumber(decimalThird); // => 1/3
```### JSON.stringify and JSON.parse with reviver
```js
var Decimal40 = decimalFactory(adapter);Decimal40.setPrecision(40);
var decimalThird = new Decimal40('1').div(new Decimal('3'));
var stringified = JSON.stringify(decimalThird);
// => '"0.3333333333333333333333333333333333333333"'JSON.parse(stringified, Decimal40.reviver);
// => new Decimal40('0.3333333333333333333333333333333333333333')
```See [spec](test/spec.js).
## Related projects
- [linear-converter](https://github.com/javiercejudo/linear-converter): flexible linear converter with built in conversions for common units.
- [linear-conversion](https://github.com/javiercejudo/linear-conversion): Linear conversion class for *linear-converter*.
- [rescale](https://github.com/javiercejudo/rescale): rescales a point given two scales.
- [rescale-util](https://github.com/javiercejudo/rescale-util): Rescale utilities.
- [scale](https://github.com/javiercejudo/scale): scales normalised data.
- [normalise](https://github.com/javiercejudo/normalise): normalise data to [0, 1].