货币转换常用方法

  1     ///   <summary> 
  2         ///   通过数字求金额的大写 
  3         /// decimal   p=123758.21m; 
  4         /// Response.Write   (new   CommonFunction().ToUpper(p)); 
  5         ///   </summary> 
  6         ///   <param   name= "d "> </param> 
  7         ///   <returns> </returns> 
  8         public static string ToUpper(decimal d)
  9         {
 10             if (d == 0)
 11                 return "零元整";
 12             string je = d.ToString("####.00");
 13             if (je.Length > 15)
 14                 return "";
 15             je = new String('0', 15 - je.Length) + je;   //若小于15位长,前面补0   
 16             string stry = je.Substring(0, 4);            //取得 '亿 '单元   
 17             string strw = je.Substring(4, 4);            //取得 '万 '单元   
 18             string strg = je.Substring(8, 4);            //取得 '元 '单元   
 19             string strf = je.Substring(13, 2);           //取得小数部分             
 20             string str1 = "", str2 = "", str3 = "";
 21             str1 = getupper(stry, "亿");            //亿单元的大写   
 22             str2 = getupper(strw, "");            //万单元的大写   
 23             str3 = getupper(strg, "");            //元单元的大写   
 24             string str_y = "", str_w = "";
 25             if (je[3].ToString() == "0" || je[4].ToString() == "0")                                                       //亿和万之间是否有0   
 26                 str_y = "";
 27             if (je[7].ToString() == "0" || je[8].ToString() == "0")                                                       //万和元之间是否有0   
 28                 str_w = "";
 29             string ret = str1 + str_y + str2 + str_w + str3;  //亿,万,元的三个大写合并   
 30             for (int i = 0; i < ret.Length; i++)              //去掉前面的 "零 "                   
 31             {
 32                 if (ret[i].ToString() != "")
 33                 {
 34                     ret = ret.Substring(i);
 35                     break;
 36                 }
 37             }
 38             for (int i = ret.Length - 1; i > -1; i--)     //去掉最后的 "零 "     
 39             {
 40                 if (ret[i].ToString() != "")
 41                 {
 42                     ret = ret.Substring(0, i + 1);
 43                     break;
 44                 }
 45             }
 46             if (ret[ret.Length - 1].ToString() != "")     //若最后不位不是 '元 ',则加一个 '元 '字   
 47                 ret = ret + "";
 48             if (ret == "零零元 ")                          //若为零元,则去掉 "元数 ",结果只要小数部分   
 49                 ret = "";
 50             if (strf == "00")                              //下面是小数部分的转换   
 51             {
 52                 ret = ret + "";
 53             }
 54             else
 55             {
 56                 string tmp = "";
 57                 tmp = getint(strf[0].ToString());
 58                 if (tmp == "")
 59                     ret = ret + tmp;
 60                 else
 61                     ret = ret + tmp + "";
 62                 tmp = getint(strf[1].ToString());
 63                 if (tmp == "")
 64                     ret = ret + "";
 65                 else
 66                     ret = ret + tmp + "";
 67             }
 68             if (ret[0].ToString() == "")
 69             {
 70                 ret = ret.Substring(1);                                                                   //防止0.03转为 "零叁分 ",而直接转为 "叁分 "   
 71             }
 72             return ret;                                                                                         //完成,返回   
 73         }
 74         ///   <summary>   
 75         ///   把一个单元转为大写,如亿单元,万单元,个单元   
 76         ///   </summary>   
 77         ///   <param   name= "str "> 这个单元的小写数字(4位长,若不足,则前面补零) </param>   
 78         ///   <param   name= "strDW "> 亿,万,元 </param>   
 79         ///   <returns> 转换结果 </returns>   
 80         private static string getupper(string str, string strDW)
 81         {
 82             if (str == "0000")
 83                 return "";
 84             string ret = "";
 85             string tmp1 = getint(str[0].ToString());
 86             string tmp2 = getint(str[1].ToString());
 87             string tmp3 = getint(str[2].ToString());
 88             string tmp4 = getint(str[3].ToString());
 89             if (tmp1 != "")
 90             {
 91                 ret = ret + tmp1 + "";
 92             }
 93             else
 94             {
 95                 ret = ret + tmp1;
 96             }
 97             if (tmp2 != "")
 98             {
 99                 ret = ret + tmp2 + "";
100             }
101             else
102             {
103                 if (tmp1 != "")       //保证若有两个零 '00 ',结果只有一个零,下同   
104                     ret = ret + tmp2;
105             }
106             if (tmp3 != "")
107             {
108                 ret = ret + tmp3 + "";
109             }
110             else
111             {
112                 if (tmp2 != "")
113                     ret = ret + tmp3;
114             }
115             if (tmp4 != "")
116             {
117                 ret = ret + tmp4;
118             }
119             if (ret[0].ToString() == "")                                                                                   //若第一个字符是 '零 ',则去掉   
120                 ret = ret.Substring(1);
121             if (ret[ret.Length - 1].ToString() == "")     //若最后一个字符是 '零 ',则去掉   
122                 ret = ret.Substring(0, ret.Length - 1);
123             return ret + strDW;                                                                                   //加上本单元的单位   
124         }
125 
126         ///   <summary>   
127         ///   单个数字转为大写   
128         ///   </summary>   
129         ///   <param   name= "c "> 小写阿拉伯数字   0---9 </param>   
130         ///   <returns> 大写数字 </returns>   
131         private static string getint(string c)
132         {
133             string strMoney = "";
134             switch (c)
135             {
136                 case "0":
137                     strMoney = "";
138                     break;
139                 case "1":
140                     strMoney = "";
141                     break;
142                 case "2":
143                     strMoney = "";
144                     break;
145                 case "3":
146                     strMoney = "";
147                     break;
148                 case "4":
149                     strMoney = "";
150                     break;
151                 case "5":
152                     strMoney = "";
153                     break;
154                 case "6":
155                     strMoney = "";
156                     break;
157                 case "7":
158                     strMoney = "";
159                     break;
160                 case "8":
161                     strMoney = "";
162                     break;
163                 case "9":
164                     strMoney = "";
165                     break;
166             }
167             return strMoney;
168         }
原文地址:https://www.cnblogs.com/ziranquliu/p/4766115.html