货币大写转换类

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('.'+ 21));
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 }
posted on 2008-01-11 09:59  感動常在  阅读(256)  评论(0编辑  收藏  举报