@yukinotech/babel-plugin-transform-jsbd-to-bigdecimal
Version:
A scheme similar to JSBI, for transforming JSBD to native bigdecimal, Referring to the implementation of jsbi (https://github.com/GoogleChromeLabs/babel-plugin-transform-jsbi-to-bigint)
39 lines (30 loc) • 2.44 kB
Markdown
# babel-plugin-transform-jsbd-to-bigdecimal
A scheme similar to JSBI, for transforming JSBD to native bigdecimal, Referring to the implementation of jsbi (https://github.com/GoogleChromeLabs/babel-plugin-transform-jsbi-to-bigint)
## how to use
use as a babel plugin `@yukinotech/babel-plugin-transform-jsbd-to-bigdecimal`
```js
const result = require('@babel/core').transform(code, {
plugins: ['@yukinotech/babel-plugin-transform-jsbd-to-bigdecimal'],
comments: false,
})
```
## how it work
it will replace indetitor `JSBD` to native bigdecimal syntax
| Operation | native BigDecimals | JSBD |
| ---------------------------------| -------------------| -----------------------------------------|
| Addition | `c = a + b` | `c = JSBD.add(a, b)` |
| Subtraction | `c = a - b` | `c = JSBD.subtract(a, b)` |
| Multiplication | `c = a * b` | `c = JSBD.multiply(a, b)` |
| Division with two arguments | `c = a / b` | `c = JSBD.divide(a, b)` |
| Remainder | `c = a % b` | `c = JSBD.remainder(a, b)` |
| Exponentiation | `c = a ** b` | `c = JSBD.pow(a, b)` |
| Comparison to other BigInts | `a === b` | `JSBD.equal(a, b)` |
| | `a !== b` | `JSBD.notEqual(a, b)` |
| | `a < b` | `JSBD.lessThan(a, b)` |
| | `a <= b` | `JSBD.lessThanOrEqual(a, b)` |
| | `a > b` | `JSBD.greaterThan(a, b)` |
| | `a >= b` | `JSBD.greaterThanOrEqual(a, b)` |
| | `c = BigDecimal.round(a,option)` | `c = JSBD.round(a, option)` |
| Division with three arguments | `c = BigDecimal.divide(a,b,roundOption)` | `c = JSBD.divide(a, b,roundOption)`|
### differences from bigint to bigdecimal
since bigdecimal has a roundOption, we can't just transform `JSBI.add(one,two)` to `one + two`,if there are three arguments we just transform `JSBD.add(one,two,option)` to `Decimal.add(one,two,option)`