1.变量定义

View Code
1         //大写数字
2         private static String[] LargeNumber = { "", "", "", "", "", "", "", "", "", "", "" };
3         //金额单位
4         private static String[] MoneyUnit = { "", "", "", "", "", "", "", "", "亿", "", "", "", "" };
5         //小数金额单位
6         private static String[] SmallMoney = { "", "" };
7         private static string moneySmall = string.Empty;
8         private static string moneyBig = string.Empty;

2.转换方法

View Code
  1         /// <summary>  
  2         /// 金额小写转中文大写。  
  3         /// 整数支持到万亿;小数部分支持到分(超过两位将进行四舍五入法处理)  
  4         /// </summary>  
  5         /// <param name="Number">需要转换的双精度浮点数</param>  
  6         /// <returns>转换后的字符串</returns>  
  7         public static String MoneyUpper(Double Number)
  8         {
  9             //标记是否含有小数
 10             bool isContainsDecimal = false;
 11             //标记是否含有整数
 12             bool isCointainsInteger = true;
 13             //整个数字字符串
 14             string number;
 15             //整数部分  
 16             string number_integer;
 17             //小数部分 
 18             string number_decimal = string.Empty;
 19             //当前的数字字符  
 20             string number_present;
 21             //返回的字符串 
 22             string number_return = string.Empty;
 23 
 24             //四舍五入取两位
 25             Number = Math.Round(Number, 2);  
 26 
 27             //各种非正常情况处理  
 28             if (Number < 0)
 29             {
 30                 return "请输入大于0的金额";
 31             }
 32 
 33             if (Number > 9999999999999.99)
 34             {
 35                 return "金额已超过正常数字";
 36             }
 37 
 38             if (Number == 0)
 39             {
 40                 return LargeNumber[0]+MoneyUnit[0]+"";
 41             }
 42 
 43             //判断是否有整数  
 44             if (Number < 1.00)
 45             {
 46                 isCointainsInteger = false;
 47             }
 48 
 49             number = Number.ToString();
 50             //默认只有整数部分  
 51             number_integer = number;
 52 
 53             if (number_integer.Contains("."))
 54             {
 55                 //分开整数与小数处理  
 56                 number_integer = number.Substring(0, number.IndexOf("."));
 57                 number_decimal = number.Substring((number.IndexOf(".") + 1), (number.Length - number.IndexOf(".") - 1));
 58                 isContainsDecimal = true;
 59             }
 60 
 61             if (number_decimal == "" || int.Parse(number_decimal) <= 0)
 62             {
 63                 //判断是否含有小数部分  
 64                 isContainsDecimal = false;
 65             }
 66 
 67             if (isCointainsInteger)
 68             {
 69                 //整数部分处理  
 70                 number_integer = Reversion(number_integer);//反转字符串  
 71                 for (int i = 0; i <= number_integer.Length - 1; i++)
 72                 {
 73                     //整数部分转换  
 74                     number_present = number_integer.Substring(i, 1);
 75                     if (int.Parse(number_present) != 0)
 76                     {
 77                         number_return = LargeNumber[int.Parse(number_present)] + MoneyUnit[i] + number_return;
 78                     }              
 79                 }
 80 
 81                 if (!isContainsDecimal)
 82                 {
 83                     return number_return + "";
 84                 }
 85             }
 86 
 87             for (int j = 0; j < number_decimal.Length; j++)
 88             {
 89                 //小数部分转换  
 90                 number_present = number_decimal.Substring(j, 1);
 91                 if (int.Parse(number_present) != 0)
 92                 {
 93                     number_return += LargeNumber[int.Parse(number_present)] + SmallMoney[j];
 94                 } 
 95             }
 96 
 97             return number_return;
 98         }
 99 
100         /// <summary>
101         /// 字符串反转
102         /// </summary>
103         /// <param name="NumStr_Zh"></param>
104         /// <returns></returns>
105         private static string Reversion(string str)
106         {
107             StringBuilder sb = new StringBuilder(str.Length);
108             for (int i = str.Length - 1; i >= 0; i--)
109             {
110                 sb.Append(str[i]);
111             }
112             return sb.ToString();
113         }
posted on 2012-05-11 13:56  捣乃忒  阅读(304)  评论(0编辑  收藏  举报