123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- func numberToWords(num int) string {
- if num == 0 {
- return "Zero"
- }
- return ntowRecurse(num)
- }
- func ntowRecurse(num int) (res string) {
- if num/1000000000 != 0 {
- res += ntowRecurse(num/1000000000) + getWord(0) + getWord(1000000000) + getWord(0) + ntowRecurse(num%1000000000)
- } else if num/1000000 != 0 {
- res += ntowRecurse(num/1000000) + getWord(0) + getWord(1000000) + getWord(0) + ntowRecurse(num%1000000)
- } else if num/1000 != 0 {
- res += ntowRecurse(num/1000) + getWord(0) + getWord(1000) + getWord(0) + ntowRecurse(num%1000)
- } else if num/100 != 0 {
- res += ntowRecurse(num/100) + getWord(0) + getWord(100) + getWord(0) + ntowRecurse(num%100)
- } else if 20 <= num {
- res += getWord(num-num%10) + getWord(0) + ntowRecurse(num%10)
- } else if num != 0 {
- res = getWord(num)
- }
- return strings.Trim(res, " ")
- }
- func getWord(num int) string {
- switch num {
- case 1:
- return "One"
- case 2:
- return "Two"
- case 3:
- return "Three"
- case 4:
- return "Four"
- case 5:
- return "Five"
- case 6:
- return "Six"
- case 7:
- return "Seven"
- case 8:
- return "Eight"
- case 9:
- return "Nine"
- case 10:
- return "Ten"
- case 11:
- return "Eleven"
- case 12:
- return "Twelve"
- case 13:
- return "Thirteen"
- case 14:
- return "Fourteen"
- case 15:
- return "Fifteen"
- case 16:
- return "Sixteen"
- case 17:
- return "Seventeen"
- case 18:
- return "Eighteen"
- case 19:
- return "Nineteen"
- case 20:
- return "Twenty"
- case 30:
- return "Thirty"
- case 40:
- return "Forty"
- case 50:
- return "Fifty"
- case 60:
- return "Sixty"
- case 70:
- return "Seventy"
- case 80:
- return "Eighty"
- case 90:
- return "Ninety"
- case 100:
- return "Hundred"
- case 1000:
- return "Thousand"
- case 1000000:
- return "Million"
- case 1000000000:
- return "Billion"
- default:
- return " "
- }
- }
|