UNPKG

decimal128

Version:

Partial implementation of IEEE 754 Decimal128 decimal floating-point numbers

29 lines (19 loc) 1.6 kB
# decimal128.js—A userland approximation to IEEE 754 Decimal128 in JavaScript This library is a prototype for the [decimal proposal](https://github.com/tc39/proposal-decimal). There should be no observable difference between what this library does and what the proposal is [supposed to do](http://tc39.es/proposal-decimal/). If you find a mismatch, please file [an issue](https://github.com/jessealama/decimal128/issues) in this repo. ## Operations - absolute value (`abs`) - addition (`add`) - subtraction (`subtract`) - multiplication (`multiply`) - division (`divide`) - remainder (`remainder`) - rounding (`round`) - `toString` emitting both decimal and exponential syntax (default is decimal) ## Comparisons - equality (`equals`) to compare for mathematical equality - less than (`lessThan`) to compare mathematical order - `compare` for comparing Decimals as digit strings (not mathematical order; e.g. `1.2` < `1.20`) ## Implementation This package is written in TypeScript. Unit tests are in Jest. There are no other external dependencies. ## Data model This package aims to reproduce the IEEE 754 [Decimal128](https://en.wikipedia.org/wiki/Decimal128_floating-point_format) 128-bit decimal floating-point numbers in JavaScript. See the [decimal proposal](https://github.com/tc39/proposal-decimal/). These **decimal** (not binary!) numbers take up 128 bits per number. This format allows for an exact representation of decimal numbers with 34 (decimal) significant digits and an exponent between -6143 and 6144. That's a _vast_ amount of range and precision!