JSFiddle - React, Tailwind, and code Playground
JavaScript
Number.prototype.toSentence = function () {
var ones = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
var tens = ["", "ten", "twenty", "thirty", "fourty", "fifty", "sixty", "seventy", "eighty", "ninety"];
var teens = ["", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"];
return function (lang) {
var number = this.valueOf();
if (parseInt(number) === number) {
switch (lang) {
case "en":
default:
return toEnglish(number);
}
} else throw new TypeError("Expected an integer.");
};
function toEnglish(number) {
var sign = number < 0 ? "minus " : "";
if (sign) number = -number; // remove the minus sign
var hundreds = nextHundreds();
if (!number) return sign + hundreds;
var next = concatenate.bind(null, nextHundreds);
var thousands = next("thousand", hundreds);
if (!number) return sign + thousands;
var millions = next("million", thousands);
if (!number) return sign + millions;
var billions = next("billion", millions);
if (!number) return sign + billions;
var trillions = next("trillion", billions);
if (!number) return sign + trillions;
var quadrillions = next("quadrillion", trillions);
return sign + quadrillions;
function nextHundreds() {
var hundreds = number % 1000;
number -= hundreds;
number /= 1000;
return getHundreds(hundreds);
}
}
function concatenate(next, unit, prev) {
next = next();
if (next !== "zero") {
next += " " + unit;
if (prev !== "zero") next += ", " + prev;
} else next = prev;
return next;
}
function getHundreds(hundreds) {
var number = hundreds % 100;
...