UNPKG

cheetah-framework

Version:

Cheetah Framework JS used in all our applications

54 lines (44 loc) 1.07 kB
/** * 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 }