货币大写转换类

 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 @   李华星  阅读(638)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示