UNPKG

quasvel

Version:

Access and interact with Aragon Organizations and their apps.

39 lines (28 loc) 1.19 kB
import { BigNumber, utils } from 'ethers' export const PCT_DECIMALS = 16 // 100% = 10^18 export const PCT_BASE = BigNumber.from(`100${'0'.repeat(PCT_DECIMALS)}`) export const bn = (x: string | number): BigNumber => BigNumber.from(x.toString()) export const formatBn = ( number: string | BigNumber, numberDecimals: string | number, formattedDecimals = 2 ): string => { const formattedNumber = utils.formatUnits(number, numberDecimals) const decimalPosition = formattedNumber.indexOf('.') if (decimalPosition === -1) { return `${formattedNumber}.${'0'.repeat(formattedDecimals)}` } const decimals = formattedNumber.substring(decimalPosition + 1) const decimalsLength = decimals.length if (decimalsLength <= formattedDecimals) { return `${formattedNumber}${'0'.repeat(formattedDecimals - decimalsLength)}` } const integer = formattedNumber.substring(0, decimalPosition) const roundedDecimals = Math.round( parseInt(decimals) / 10 ** (decimalsLength - formattedDecimals) ) const parsedRoundedDecimals = (roundedDecimals === 0) ? '0'.repeat(formattedDecimals) : roundedDecimals.toString() return `${integer}.${parsedRoundedDecimals}` }