JSFiddle - React, Tailwind, and code Playground
by tonyleeper
JavaScript
/**
Format Number Short Form (Metric Prefixes)
*/
var format = {
multipliers: [
{ value: 1e24, suffix: 'Y' },
{ value: 1e21, suffix: 'Z' },
{ value: 1e18, suffix: 'E' },
{ value: 1e15, suffix: 'P' },
{ value: 1e12, suffix: 'T' },
{ value: 1e9, suffix: 'G' },
{ value: 1e6, suffix: 'M' },
{ value: 1e3, suffix: 'k' },
{ value: 1e0, suffix: '' },
{ value: 1e-3, suffix: 'm' },
{ value: 1e-6, suffix: 'µ' },
{ value: 1e-9, suffix: 'n' },
{ value: 1e-12, suffix: 'p' },
{ value: 1e-15, suffix: 'f' },
{ value: 1e-18, suffix: 'a' },
{ value: 1e-21, suffix: 'z' },
{ value: 1e-24, suffix: 'y' }
],
toShortForm: function(n) {
if (n < 0) {
return '-' + this.toShortForm(-n);
}
if (n > 1) {
n = n.toPrecision(3);
}
if (n < 1e27 && n > 1e-27) {
for (var i = 0; i < this.multipliers.length; i++) {
if (n >= this.multipliers[i].value) {
return (n / this.multipliers[i].value).toFixed() + this.multipliers[i].suffix
}
}
}
return n.toExponential();
}
};
function getRandomInt (min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(format.toShortForm(99)); // outputs 99
console.log(format.toShortForm(12654)); // outputs 13k
console.log(format.toShortForm(99999999999999999)); // outputs 100P