1 public class ConverMoney
2 {
3 public static string ConvertToUpper(double inputNum)
4 {
5 string strTemp = inputNum.ToString("f2");
6 return ProcessLeft(strTemp)+ProcessRight(strTemp);
7 }
8
9 #region 处理整数部分
10 private static string ProcessLeft(string inputNum)
11 {
12 int temp = Convert.ToInt32(inputNum.Substring(0, inputNum.IndexOf('.')));
13 Stack<string> processStack=new Stack<string>();
14 string[] separate ={ "拾", "佰", "仟", "万", "十","佰","仟","亿" };
15 int i=0;
16 if(temp<10)
17 {
18 return temp.ToString();
19 }
20 else
21 {
22 while (true)
23 {
24 if (temp % 10 != 0)
25 {
26 if (i != 0)
27 processStack.Push(separate[i-1]);
28 processStack.Push(ConvertNumToUpper(temp % 10));
29
30 }
31 else
32 {
33 if (processStack.Count != 0 && processStack.Peek() != "零")
34 processStack.Push("零");
35
36 }
37 i++;
38 temp = temp / 10;
39 if (temp == 0)
40 break;
41 }
42 }
43 string returnStr = "";
44 while (processStack.Count != 0)
45 returnStr = returnStr + processStack.Pop();
46 return returnStr;
47 }
48 #endregion
49
50 #region 处理小数部分
51 private static string ProcessRight(string inputNum)
52 {
53 int temp1=Convert.ToInt32(inputNum.Substring(inputNum.IndexOf('.') + 1,1));
54 int temp2 = Convert.ToInt32(inputNum.Substring(inputNum.IndexOf('.') + 2, 1));
55 if (temp1 == 0 && temp2 == 0)
56 return "圆整";
57 else
58 return "圆零"+ConvertNumToUpper(temp1) + "角" + ConvertNumToUpper(temp2) + "分";
59
60 }
61 #endregion
62
63 #region 数字转换成大写
64 private static string ConvertNumToUpper(int input)
65 {
66 string[] UpperNum ={ "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒" ,"玖"};
67 if (input <= 9)
68 {
69 return UpperNum[input];
70 }
71 else
72 {
73 throw new Exception("转换错误");
74 }
75 }
76 #endregion
77 }