1: public static string ConvertNumberToWord(long numberVal)
2: {
3: string[] powers = new string[] { "thousand ", "million ",
4: "billion " };
5:
6: string[] ones = new string[] {"one", "two", "three", "four",
7: "five", "six", "seven", "eight", "nine", "ten",
8: "eleven", "twelve", "thirteen", "fourteen", "fifteen",
9: "sixteen", "seventeen", "eighteen", "nineteen"};
10:
11: string[] tens = new string[] {"twenty", "thirty", "forty",
12: "fifty", "sixty", "seventy", "eighty", "ninety"};
13:
14: string wordValue = "";
15:
16: if (numberVal == 0) return "zero";
17: if (numberVal < 0)
18: {
19: wordValue = "negative ";
20: numberVal = -numberVal;
21: }
22:
23: long[] partStack = new long[] { 0, 0, 0, 0 };
24: int partNdx = 0;
25:
26: while (numberVal > 0)
27: {
28: partStack[partNdx++] = numberVal % 1000;
29: numberVal /= 1000;
30: }
31:
32: for (int i = 3; i >= 0; i--)
33: {
34: long part = partStack[i];
35:
36: if (part >= 100)
37: {
38: wordValue += ones[part / 100 - 1] + " hundred ";
39: part %= 100;
40: }
41:
42: if (part >= 20)
43: {
44: if ((part % 10) != 0) wordValue += tens[part / 10 - 2] +
45: " " + ones[part % 10 - 1] + " ";
46: else wordValue += tens[part / 10 - 2] + " ";
47: }
48: else if (part > 0) wordValue += ones[part - 1] + " ";
49:
50: if (part != 0 && i > 0) wordValue += powers[i - 1];
51: }
52:
53: return wordValue;
54: }