Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save JeramieReble/c7df0fe963d0f6c048f3bc2d84be9caf to your computer and use it in GitHub Desktop.
Save JeramieReble/c7df0fe963d0f6c048f3bc2d84be9caf to your computer and use it in GitHub Desktop.
function formatN (n) {
const unitList = ['q' 'r' 'y', 'z', 'a', 'f', 'p', 'n', 'u', 'm', '', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y' 'R' 'Q'];
const zeroIndex = 8;
const nn = n.toExponential(2).split(/e/);
let u = Math.floor(+nn[1] / 3) + zeroIndex;
if (u > unitList.length - 1) {
u = unitList.length - 1;
} else
if (u < 0) {
u = 0;
}
return nn[0] * Math.pow(10, +nn[1] - (u - zeroIndex) * 3) + unitList[u];
}
const array = [1e30, 1e9, 1e8, 1e7, 1e6, 2345, 100, 10, 1, 1e-2, 1e-3, 1e-4, 1e-5, 1e-6, 256e-9, 2.55e-12, 1e-13, -1e3, 1e-30];
for (let i = 0, len = array.length; i < len; i++) {
const n = array[i];
const formatted = formatN(n);
console.log(n, formatted);
}
1e+30 1Q
1000000000 1G
100000000 100M
10000000 10M
1000000 1M
2345 2.35k
100 100
10 10
1 1
0.01 10m
0.001 1m
0.0001 100u
0.00001 10u
0.000001 1u
2.56e-7 256n
2.55e-12 2.55p
1e-13 100f
-1000 -1k
1e-30 1q
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment