Source: https://stackoverflow.com/a/40724354
For formatting / displaying large numbers (e.g. likes, views)
const SI_SYMBOL = ["", "k", "M", "G", "T", "P", "E"]; function abbreviateNumber(number){ // what tier? (determines SI symbol) const tier = Math.log10(Math.abs(number)) / 3 | 0; // if zero, we don't need a suffix if(tier == 0) return number; // get suffix and determine scale const suffix = SI_SYMBOL[tier]; const scale = 10 ** (tier * 3); // scale the number const scaled = number / scale; // format number and add suffix return scaled.toFixed(1) + suffix; }
Source: https://stackoverflow.com/a/60988355
ES2020 adds support for this in Intl.NumberFormat
Using notation as follows:
let formatter = Intl.NumberFormat('en', { notation: 'compact' }); // example 1 let million = formatter.format(1e6); // example 2 let billion = formatter.format(1e9); // print console.log(million == '1M', billion == '1B');
538000cookie-checkAbbreviate numbers