46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
|
|
/**
|
|
* 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)
|
|
}
|