nothing-simulator/docs/js/num.js

24 lines
No EOL
1.1 KiB
JavaScript

let illions = [
"", "k", "M", "B", "T", "qd", "Qn", "sx", "Sp", "O", "N", "de", "Ud", "DD", "tdD", "qdD", "QnD", "sxD", "SpD", "OcD", "NvD", "Vgn", "UVg", "DVg", "TVg", "qtV", "QnV", "SeV", "SPG", "OVG", "NVG", "TGN", "UTG", "DTG", "tsTG", "qtTG", "QnTG", "ssTG", "SpTG", "OcTG", "NoTG", "QdDR", "uQDR", "dQDR", "tQDR", "qdQDR", "QnQDR", "sxQDR", "SpQDR", "OQDDr", "NQDDr", "qQGNT", "uQGNT", "dQGNT", "tQGNT", "qdQGNT", "QnQGNT", "sxQGNT", "SpQGNT", "OQQGNT", "NQQGNT", "SXGNTL"
];
function numify(x) {
x = x * 1;
let il = Math.log(x) / Math.log(1000);
il = Math.floor(il);
let base = x / (1000 ** il);
base = base.toString();
base = base.slice(0,Math.min(base.length,5))
if (il in illions && !isNaN(x) && Math.abs(x) != Infinity) {
return `${base}${illions[il]}`
} else if (x == 0 || isNaN(x) || Math.abs(x) == Infinity) {
return `${x}`;
} else if (x < 0) {
return `-${numify(-x)}`
} else if (x < 1) {
return `1/${numify(1 / x)}`
} else if (il > illions.length - 1) {
return `10^${numify(Math.log10(x))}`
}
}