-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNumbersToWords2.cs
76 lines (63 loc) · 2.15 KB
/
NumbersToWords2.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
class NumbersToWords2
{
static void Main(string[] args)
{
string textNumber;
int i;
// test some random groups of numbers
for (i = -1; i < 109; i++)
{
textNumber = ConvertNumberToText(i);
Console.WriteLine(i + "\t" + textNumber);
}
for (i = 10000; i < 11003; i++)
{
textNumber = ConvertNumberToText(i);
Console.WriteLine(i + "\t" + textNumber);
}
for (i = 100000; i < 100010; i++)
{
textNumber = ConvertNumberToText(i);
Console.WriteLine(i + "\t" + textNumber);
}
}
public static string ConvertNumberToText(int number)
{
if (number == 0)
return "zero";
if (number < 0)
return "minus " + ConvertNumberToText(Math.Abs(number));
string words = "";
if ((number / 1000000) > 0)
{
words += ConvertNumberToText(number / 1000000) + " million ";
number %= 1000000;
}
if ((number / 1000) > 0)
{
words += ConvertNumberToText(number / 1000) + " thousand ";
number %= 1000;
}
if ((number / 100) > 0)
{
words += ConvertNumberToText(number / 100) + " hundred ";
number %= 100;
}
if (number > 0)
{
if (words != "")
words += "and ";
var unitsMap = new[] { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };
var tensMap = new[] { "zero", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" };
if (number < 20)
words += unitsMap[number];
else
{
words += tensMap[number / 10];
if ((number % 10) > 0)
words += "-" + unitsMap[number % 10];
}
}
return words;
}
}