UNPKG

word-number-converter

Version:

A simple JavaScript library to convert numbers to words and words to numbers. Works in both Node.js and browser environments.

71 lines (63 loc) 1.56 kB
const NUMS_TO_WORDS = { 0: "zero", 1: "one", 2: "two", 3: "three", 4: "four", 5: "five", 6: "six", 7: "seven", 8: "eight", 9: "nine", 10: "ten", 11: "eleven", 12: "twelve", 13: "thirteen", 14: "fourteen", 15: "fifteen", 16: "sixteen", 17: "seventeen", 18: "eighteen", 19: "nineteen", 20: "twenty", 30: "thirty", 40: "forty", 50: "fifty", 60: "sixty", 70: "seventy", 80: "eighty", 90: "ninety", }; function numberToWordsBelowThousand(n) { let words = []; if (n >= 100) { words.push(NUMS_TO_WORDS[Math.floor(n / 100)] + " hundred"); n %= 100; } if (n > 0) { if (n < 20) { words.push(NUMS_TO_WORDS[n]); } else { const tens = Math.floor(n / 10) * 10; const units = n % 10; words.push( NUMS_TO_WORDS[tens] + (units ? "-" + NUMS_TO_WORDS[units] : "") ); } } return words.join(" "); } export function toWords(n) { if (n === 0) return "zero"; let parts = []; const THOUSANDS = ["", "thousand", "million"]; for (let i = 0; n > 0; i++) { const chunk = n % 1000; if (chunk > 0) { const chunkWords = numberToWordsBelowThousand(chunk); parts.unshift(chunkWords + (THOUSANDS[i] ? " " + THOUSANDS[i] : "")); } n = Math.floor(n / 1000); } return parts.join(" ").trim(); }