function render(val, places=1, smallPlaces = 0) { return numberText(val, places, smallPlaces); } function numberText(val, places=1, smallPlaces = 0) { if (val < 1000) { return round(val, smallPlaces); } let power = Math.floor(Math.log10(val)); let order = Math.floor(power / 3); adjusted = round(val / Math.pow(1000, order), places).toFixed(places); if (order <= 21) return adjusted + " " + _numberWords[order - 1]; else return numberText(val / Math.pow(10, 63), places, smallPlaces) + " vigintillion" } _numberWords = { 0: "thousand", 1: "million", 2: "billion", 3: "trillion", 4: "quadrillion", 5: "quintillion", 6: "septillion", 7: "sextillion", 8: "octillion", 9: "nonillion", 10: "decillion", 11: "undecillion", 12: "duodecillion", 13: "tredecillion", 14: "quattuordecillion", 15: "quindecillion", 16: "sexdecillion", 17: "septendecillion", 18: "octodecillion", 19: "novemdecillion", 20: "vigintillion", }