@skeynetwork/big-decimal
v1.5.0
Published
Library for handling and serializing big decimal numbers
Downloads
2
Keywords
Readme
@skeynetwork/big-decimal
Library for handling and serializing big decimal numbers
Examples
import { BigDecimal } from '@skey-network/big-decimal'
// Create instance
const a = BigDecimal.from('1.22') // 2 decimals
const b = BigDecimal.from(100n) // 0 decimals
const c = BigDecimal.from(BigDecimal.from('2.30')) // 2 decimals
// Math (add, sub, mul, div, mod, floor, abs, sign)
const sum = a.add(c)
// Check for equality
a.eq(b) // => false
// Inverse (1 / x)
// Useful for getting price of something
const ethForToken = '0.002'
const tokenForEth = BigDecimal.from(ethForToken).inverse() // => 500.000
// Serialization/Deserialization
// Number of decimals is based on length of string after dot
const send = BigDecimal.from('2.1100').toString() // => 2.1100
const receive = BigDecimal.from(send) // BigDecimal(2.1100)
Changing decimal places
floor
- Does not modify integral part
- Appends additional 0s if decimals number is higher
- Floors fractional part if decimals is lower
BigDecimal.from('0.23').setDecimals(8, 'floor') // => 0.23000000
BigDecimal.from('400.54321').setDecimals(2, 'floor') // => 400.54
shift
- Does not modify number value, only moves decimal point
- The resulting number will have decimal point set in nth position from right
- Useful when transforming number from bigint to bigdecimal
const eth = 1230000000000000000n
BigDecimal.from(eth).setDecimals(18, 'shift') // => 1.230000000000000000
BigDecimal.from('123456').setDecimals(3, 'shift') // => 123.456