cheetah-framework
Version:
Cheetah Framework JS used in all our applications
54 lines (44 loc) • 1.07 kB
JavaScript
/**
* Helper for Number
*
* @param {number} number
* @param {boolean} dashEmpty
* @returns {string|number|*}
*/
function humanReadable (number, dashEmpty = false) {
if (_.includes([null, undefined, ''], number)) {
return dashEmpty ? '---' : ''
}
if (typeof number !== 'number') {
return number
}
return numberWithDigits(number, 3)
}
function roundDigits (nbr, digits) {
return Math.round(nbr * Math.pow(10, digits)) * Math.pow(10, -digits)
}
function numberWithDigits (nbr, digits) {
if (nbr === 0) {
return 0
}
const log10 = Math.log10(nbr)
let suffix = ''
if (log10 >= 9) {
nbr = nbr / Math.pow(10, 9)
suffix = ' G'
} else if (log10 >= 6) {
nbr = nbr / Math.pow(10, 6)
suffix = ' M'
} else if (log10 >= 3) {
nbr = nbr / Math.pow(10, 3)
suffix = ' k'
} else {
return nbr
}
digits = digits - Math.floor(Math.log10(nbr)) - 1
const roundedNumber = roundDigits(nbr, digits)
return (digits > 0 ? roundedNumber.toFixed(digits) : roundedNumber) + suffix
}
export {
humanReadable
}