1.5.0 • Published 1 year ago

@skeynetwork/big-decimal v1.5.0

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

@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
1.5.0

1 year ago

1.3.2

1 year ago

1.4.0

1 year ago

1.3.1

1 year ago

1.3.0

1 year ago

1.2.0

1 year ago

1.1.0

1 year ago

1.2.1

1 year ago

1.0.0

1 year ago