Number To Words In javascript
https://stackoverflow.com/questions/14766951/convert-digits-into-words-with-javascript
by Rohith K P
JavaScript
var num = "Zero One Two Three Four Five Six Seven Eight Nine Ten Eleven Twelve Thirteen Fourteen Fifteen Sixteen Seventeen Eighteen Nineteen".split(" ");
var tens = "Twenty Thirty Forty Fifty Sixty Seventy Eighty Ninety".split(" ");
regex = /^[0-9]{1,9}(\.[0-9]{1,2})?$/;
function number2words(n){
if (n < 20) return num[n];
var digit = n%10;
if (n < 100) return tens[~~(n/10)-2] + (digit? " " + num[digit]: "");
if (n < 1000) return num[~~(n/100)] +" Hundred" + (n%100 == 0? "": " and " + number2words(n%100));
return number2words(~~(n/1000)) + " Thousand" + (n%1000 != 0? " " + number2words(n%1000): "");
}
function toWords(n) {
let hasDecimal = false;
let decimalPartString;
if(n === null || n === undefined) return '';
if(typeof n === 'string') {
hasDecimal = n.indexOf(".") > -1;
n = Number(n.replace(/[^0-9.]+/g,""));
} else {
hasDecimal = n%1 !== 0;
}
if( hasDecimal ) {
let decimal = (n - ~~n).toFixed(2);
decimalPartString = decimal.substring(2);
}
n = ~~n;
const intPartInWords = number2words(n);
return `${intPartInWords} Dollars`+`${hasDecimal? ` and ${decimalPartString}/100`: ''}`;
}
console.log(toWords(114.8));