|
@@ -1,3 +1,93 @@
|
|
|
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 " "
|
|
|
+ }
|
|
|
+}
|
|
|
+
|