https://github.com/boulangerie/lodash-arithmetic
Lodash mixins for arbitrary-precision arithmetic
https://github.com/boulangerie/lodash-arithmetic
arbitrary arithmetic big decimal float lodash maths mixins number operations precision
Last synced: about 2 months ago
JSON representation
Lodash mixins for arbitrary-precision arithmetic
- Host: GitHub
- URL: https://github.com/boulangerie/lodash-arithmetic
- Owner: Boulangerie
- Created: 2016-12-18T20:38:48.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2016-12-18T21:45:05.000Z (about 9 years ago)
- Last Synced: 2025-07-16T18:45:23.902Z (5 months ago)
- Topics: arbitrary, arithmetic, big, decimal, float, lodash, maths, mixins, number, operations, precision
- Language: JavaScript
- Homepage:
- Size: 4.88 KB
- Stars: 5
- Watchers: 2
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# lodash-arithmetic
[](https://travis-ci.org/Boulangerie/lodash-arithmetic)
[](https://coveralls.io/github/Boulangerie/lodash-arithmetic)
[](https://www.npmjs.org/package/lodash-arithmetic)
[](http://npm-stat.com/charts.html?package=lodash-arithmetic&from=2016-12-18)
[](https://david-dm.org/Boulangerie/lodash-arithmetic)
[](https://david-dm.org/Boulangerie/lodash-arithmetic)
[](https://www.npmjs.org/package/lodash-arithmetic)
> Lodash mixins for arbitrary-precision arithmetic
## Why Lo-Dash mixins for arithmetic?
Because of binary floating-point, arithmetic operations in JavaScript may imply rounding issues like:
> 0.1 + 0.2 = 0.30000000000000004
You will find a complete explanation about floating-point arithmetic at http://floating-point-gui.de/.
Lodash-arithmetic provides simple Lo-Dash mixins for basic arithmetic operations: addition, subtraction, multiplication and division.
Even if Lo-Dash 4 natively has the methods [_.add](https://lodash.com/docs/4.17.2#add), [_.subtract](https://lodash.com/docs/4.17.2#subtract), [_.multiply](https://lodash.com/docs/4.17.2#multiply) and [_.divide](https://lodash.com/docs/4.17.2#divide), they do not take in account arbitrary-precision decimal.
**Let's see the following examples:**
```js
// Without Lo-Dash
console.log(0.1 + 0.2 === 0.3) // false
// With Lo-Dash 4 but without the arithmetic mixins
console.log(_.add(0.1, 0.2) === 0.3) // false
// With Lo-Dash and the arithmetic mixins
console.log(_.add(0.1, 0.2) === 0.3) // true
```
## Install
The easiest way is to install `lodash-arithmetic` as `dependency`:
```sh
npm install lodash-arithmetic --save
```
## Usage
##### Addition
```js
_.add(0.1, 0.2); // 0.3
```
##### Subtraction
```js
_.subtract(0.1235, 0.1234); // 0.0001
```
##### Multiplication
```js
_.multiply(0.07, 100); // 7
```
##### Division
```js
_.divide(8.2, 1000); // 0.0082
```
##### Chaining
```js
_(0.1)
.add(0.2)
.multiply(77.1)
.subtract(0.12345)
.value(); // 23.00655
```
## License
Code licensed under [MIT License](LICENSE).