# @freemework/decimal.bignumberjs

0.13.1 • Public • Published

# Freemework

FDecimal is a data type for storing decimal values and manipulate its via mathematical functions according infinite-precision arithmetic. It should be used when it is important to preserve exact precision, for example with monetary data.

##### Approximation
```const totalMoney = 600.9;
const pricePerItem = 200.3;
const totalSpent = pricePerItem * 3;

console.log(totalMoney === totalSpent); // false (while expected true)
console.log(totalSpent); // 600.9000000000001```
##### Digits limit
```const left = parseInt("123456789012345678901234567890");
const right = parseInt("1");
const result = left + right;
console.log(result); // 1.2345678901234568e+29 (while expected 123456789012345678901234567891)```

### Examples

You can see a lot of examples in unit tests. Here we show some points only.

### Avoid approximation

```const { FDecimal } = require("@freemework/decimal.bignumberjs");

const totalMoney = FDecimal.fromFloat(600.90, 2);
const pricePerItem = FDecimal.fromFloat(200.30, 2);

console.log(FDecimal.equalsTo(totalMoney, totalSpent)); // true
console.log(FDecimal.toString(totalSpent));             // 600.9```

### Avoid digits limit

```import { FDecimal } from "@freemework/decimal.bignumberjs";

const left = "123456789012345678901234567890";
const right = "1";
const result = FDecimal.plus(left, right);
console.log(result); // 123456789012345678901234567891```

## Build

```npm install
npm run build```

This will build the library and put them in the folder .dist

## Test

To execute tests for the library, install the project dependencies once:

```npm install
npm run build
npm run test```

## Package Sidebar

### Install

`npm i @freemework/decimal.bignumberjs`

### Repository

github.com/freemework/decimal

### Homepage

docs.freemework.org/#common?lang=typescript

81

0.13.1

Apache-2.0

78.2 kB

28