1.变量定义
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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.转换方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }