mango-v4-ui/utils/numbers.ts

83 lines
2.1 KiB
TypeScript
Raw Normal View History

2022-07-05 20:37:49 -07:00
const digits2 = new Intl.NumberFormat('en', { maximumFractionDigits: 2 })
const digits6 = new Intl.NumberFormat('en', { maximumFractionDigits: 6 })
const digits9 = new Intl.NumberFormat('en', { maximumFractionDigits: 9 })
export const formatDecimal = (
value: number,
decimals: number = 6,
opts = { fixed: false }
) => {
if (opts?.fixed) return value.toFixed(decimals)
if (decimals === 2) return digits2.format(value)
if (decimals === 6) return digits6.format(value)
if (decimals === 9) return digits9.format(value)
}
2022-07-10 19:01:16 -07:00
export const numberFormat = new Intl.NumberFormat('en', {
maximumSignificantDigits: 7,
})
2022-07-22 14:39:02 -07:00
2022-08-03 14:46:37 -07:00
export const floorToDecimal = (value: number, decimals: number) => {
2022-08-02 11:04:00 -07:00
return Math.floor(value * 10 ** decimals) / 10 ** decimals
}
2022-08-13 22:07:53 -07:00
const usdFormatter0 = Intl.NumberFormat('en', {
minimumFractionDigits: 0,
maximumFractionDigits: 0,
style: 'currency',
currency: 'USD',
})
const usdFormatter2 = Intl.NumberFormat('en', {
minimumFractionDigits: 2,
maximumFractionDigits: 2,
style: 'currency',
currency: 'USD',
})
const usdFormatter4 = Intl.NumberFormat('en', {
minimumFractionDigits: 4,
maximumFractionDigits: 4,
style: 'currency',
currency: 'USD',
})
2022-08-11 19:27:36 -07:00
const numberFormatter0 = Intl.NumberFormat('en', {
minimumFractionDigits: 0,
maximumFractionDigits: 0,
})
2022-07-22 14:39:02 -07:00
const numberFormatter2 = Intl.NumberFormat('en', {
minimumFractionDigits: 2,
maximumFractionDigits: 2,
})
const numberFormatter4 = Intl.NumberFormat('en', {
minimumFractionDigits: 4,
maximumFractionDigits: 4,
})
const numberFormatter6 = Intl.NumberFormat('en', {
minimumFractionDigits: 6,
maximumFractionDigits: 6,
})
2022-08-13 22:07:53 -07:00
export const formatFixedDecimals = (value: number, isCurrency?: boolean) => {
2022-08-01 12:23:29 -07:00
if (value === 0) {
2022-08-13 22:07:53 -07:00
return isCurrency ? '$0.00' : 0
2022-08-11 19:27:36 -07:00
} else if (value >= 1000) {
2022-08-13 22:07:53 -07:00
return isCurrency
? usdFormatter0.format(value)
: numberFormatter0.format(value)
2022-07-22 14:39:02 -07:00
} else if (value >= 1) {
2022-08-13 22:07:53 -07:00
return isCurrency
? usdFormatter2.format(value)
: numberFormatter2.format(value)
2022-07-22 14:39:02 -07:00
} else {
2022-08-13 22:07:53 -07:00
return isCurrency
? usdFormatter4.format(value)
: numberFormatter4.format(value)
2022-07-22 14:39:02 -07:00
}
}