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));