Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nefe/number-precision
🚀1K tiny & fast lib for doing addition, subtraction, multiplication and division operations precisely
https://github.com/nefe/number-precision
floating-point number-converter rounding-error
Last synced: 5 days ago
JSON representation
🚀1K tiny & fast lib for doing addition, subtraction, multiplication and division operations precisely
- Host: GitHub
- URL: https://github.com/nefe/number-precision
- Owner: nefe
- Created: 2017-08-21T09:03:31.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-06-11T02:08:46.000Z (8 months ago)
- Last Synced: 2025-01-14T00:07:50.013Z (12 days ago)
- Topics: floating-point, number-converter, rounding-error
- Language: TypeScript
- Homepage:
- Size: 325 KB
- Stars: 4,050
- Watchers: 58
- Forks: 328
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome - nefe/number-precision - 🚀1K tiny & fast lib for doing addition, subtraction, multiplication and division operations precisely (TypeScript)
- awesome-github-star - number-precision
- awesome-star-libs - nefe / number-precision
README
# number-precision [![npm version](https://badge.fury.io/js/number-precision.svg)](http://badge.fury.io/js/number-precision) [![Build Status](https://travis-ci.org/nefe/number-precision.svg)](https://travis-ci.org/nefe/number-precision) [![codecov](https://codecov.io/gh/nefe/number-precision/branch/master/graph/badge.svg)](https://codecov.io/gh/nefe/number-precision)
Perform addition, subtraction, multiplication and division operations precisely using javascript
### Why
```js
0.1 + 0.2 = 0.30000000000000004
1.0 - 0.9 = 0.09999999999999998
0.105.toFixed(2) = 0.1 // not 0.11
```### Install
```
npm install number-precision --save
```### Methods
```js
NP.strip(num) // strip a number to nearest right number
NP.plus(num1, num2, num3, ...) // addition, num + num2 + num3, two numbers is required at least.
NP.minus(num1, num2, num3, ...) // subtraction, num1 - num2 - num3
NP.times(num1, num2, num3, ...) // multiplication, num1 * num2 * num3
NP.divide(num1, num2, num3, ...) // division, num1 / num2 / num3
NP.round(num, ratio) // round a number based on ratio
```### Usage
```js
import NP from 'number-precision'
NP.strip(0.09999999999999998); // = 0.1
NP.plus(0.1, 0.2); // = 0.3, not 0.30000000000000004
NP.plus(2.3, 2.4); // = 4.7, not 4.699999999999999
NP.minus(1.0, 0.9); // = 0.1, not 0.09999999999999998
NP.times(3, 0.3); // = 0.9, not 0.8999999999999999
NP.times(0.362, 100); // = 36.2, not 36.199999999999996
NP.divide(1.21, 1.1); // = 1.1, not 1.0999999999999999
NP.round(0.105, 2); // = 0.11, not 0.1
```PS: If you want to get rid of `XXX is beyond boundary when transfer to integer, the results may not be accurate`, use this at the beginning of your app to turn off boundary checking.
```js
NP.enableBoundaryChecking(false); // default param is true
```### License
MIT