/** * change price with customer decimals to bigNum with 18 decimals * @param {number} price * @param {number} decimals * @return {string} */ export function parsePrice(price: number, decimals: number) { const n = 19 - decimals return price + new Array(n).join('0') } /** * format price with customer decimals to string for display * @param {number | string} price * @param {number} decimals * @param {number} fixed * @return {number | string} */ export function formatPrice(price: number|string, decimals?: number, fixed = 2) { if (!decimals) { return price } let str = price + '' const length = str.length str = str.padStart(decimals, '0') if (decimals >= length) { str = '0.' + str } else { const pos = length - decimals str = str.slice(0, pos) + '.' + str.slice(pos) } str = str.slice(0, str.lastIndexOf('.') + fixed + 1) return str // return str.replace(/0+$/, '').replace(/\.+$/, '') } /** * number to hex string * @param {number} chainId * @return {string} */ export function toHexChainId(chainId: number) { return '0x' + chainId.toString(16) }