37 lines
1022 B
JavaScript
37 lines
1022 B
JavaScript
export const formatDollars = (value, cents = true) => {
|
|
if (typeof value === 'number') {
|
|
return value.toLocaleString('us-US', {
|
|
style: 'currency',
|
|
currency: 'USD',
|
|
})
|
|
} else if (typeof value === 'string') {
|
|
if (value === '') {
|
|
return value
|
|
}
|
|
|
|
return parseFloat(value).toLocaleString('us-US', {
|
|
style: 'currency',
|
|
currency: 'USD',
|
|
})
|
|
}
|
|
return ''
|
|
}
|
|
|
|
export const abbreviateDollars = (value, decimals = 1) => {
|
|
if (value === null) {
|
|
return null
|
|
} // terminate early
|
|
if (value === 0) {
|
|
return '0'
|
|
} // terminate early
|
|
var b = value.toPrecision(2).split('e'), // get power
|
|
k = b.length === 1 ? 0 : Math.floor(Math.min(b[1].slice(1), 14) / 3), // floor at decimals, ceiling at trillions
|
|
c =
|
|
k < 1
|
|
? value.toFixed(0 + decimals)
|
|
: (value / Math.pow(10, k * 3)).toFixed(decimals), // divide by power
|
|
d = c < 0 ? c : Math.abs(c), // enforce -0 is 0
|
|
e = d + ['', 'k', 'M', 'B', 'T'][k] // append power
|
|
return e
|
|
}
|