Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/MikeMcl/decimal.js-light
The light version of decimal.js, an arbitrary-precision Decimal type for JavaScript.
https://github.com/MikeMcl/decimal.js-light
arbitrary-precision bigdecimal bignumber javascript significant-digits
Last synced: about 2 months ago
JSON representation
The light version of decimal.js, an arbitrary-precision Decimal type for JavaScript.
- Host: GitHub
- URL: https://github.com/MikeMcl/decimal.js-light
- Owner: MikeMcl
- License: mit
- Created: 2016-02-24T23:39:09.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2024-04-24T06:36:44.000Z (8 months ago)
- Last Synced: 2024-11-06T13:11:51.387Z (about 2 months ago)
- Topics: arbitrary-precision, bigdecimal, bignumber, javascript, significant-digits
- Language: JavaScript
- Homepage: http://mikemcl.github.io/decimal.js-light
- Size: 649 KB
- Stars: 370
- Watchers: 4
- Forks: 48
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
![decimal.js-light](https://raw.githubusercontent.com/MikeMcl/decimal.js-light/gh-pages/decimaljslight.png)
The light version of [decimal.js](https://github.com/MikeMcl/decimal.js/), an arbitrary-precision Decimal type for JavaScript.
[![Build Status](https://travis-ci.org/MikeMcl/decimal.js-light.svg)](https://travis-ci.org/MikeMcl/decimal.js-light)
This library is the newest of the family of libraries: [bignumber.js](https://github.com/MikeMcl/bignumber.js/), [big.js](https://github.com/MikeMcl/big.js/), [decimal.js](https://github.com/MikeMcl/decimal.js/) and *decimal.js-light*.
The API is more or less a subset of the API of *decimal.js*.![API](https://raw.githubusercontent.com/MikeMcl/decimal.js-light/gh-pages/API.png)
__Differences between this library and *decimal.js*__
Size of *decimal.js* minified: 32.1 KB.
Size of *decimal.js-light* minified: 12.7 KB.This library does not include `NaN`, `Infinity` or `-0` as legitimate values, or work with values in other bases.
Here, the `Decimal.round` property is just the default rounding mode for `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`. It does not apply to arithmetic operations, which are simply truncated at the required precision.
If rounding is required just apply it explicitly, for example
```js
x = new Decimal(2);
y = new Decimal(3);// decimal.js
x.dividedBy(y).toString(); // '0.66666666666666666667'// decimal.js-light
x.dividedBy(y).toString(); // '0.66666666666666666666'
x.dividedBy(y).toDecimalPlaces(19).toString(); // '0.6666666666666666667'
```The `naturalExponential`, `naturalLogarithm`, `logarithm`, and `toPower` methods in this library have by default a limited precision of around 100 digits. This limit can be increased at runtime using the `LN10` (the natural logarithm of ten) configuration object property.
For example, if a maximum precision of 400 digits is required for these operations use
```js
// 415 digits
Decimal.set({
LN10: '2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286248633409525465082806756666287369098781689482907208325554680843799894826233198528393505308965377732628846163366222287698219886746543667474404243274365155048934314939391479619404400222105101714174800368808401264708068556774321622835522011480466371565912137345074785694768346361679210180644507064800027'
});
```Also, in this library the `e` property of a Decimal is the base 10000000 exponent, not the base 10 exponent as in *decimal.js*.
Use the `exponent` method to get the base 10 exponent.## Quickstart
Browser:
```html
```
Node package manager:
```shell
$ npm install --save decimal.js-light
``````js
// Node.js
var Decimal = require('decimal.js-light');// Adjust the global configuration if required (these are the defaults)
Decimal.set({
precision: 20,
rounding: Decimal.ROUND_HALF_UP,
toExpNeg: -7,
toExpPos: 21
});phi = new Decimal('1.61803398874989484820458683436563811772030917980576');
phi.toFixed(10); // '1.6180339887'
phi.times(2).minus(1).toPower(2).plus('1e-19').equals(5); // true
```
See the [documentation](http://mikemcl.github.io/decimal.js-light) for further information.
[TypeScript](https://github.com/Microsoft/TypeScript) type declaration file contributed by [TANAKA Koichi](https://github.com/MugeSo).