C# 金额转换成大写
2018-05-17 15:50
1923 人阅读
分类:
做报表时候一般金额会使用大写来显示,这里将金额转换成大写格式
/// <summary> /// 大写金额实体 /// </summary> public class OrderReportStatisticsMoneyModel { /// <summary> /// 分位 /// </summary> public string MinVal { get; set; } /// <summary> /// 角位 /// </summary> public string DimeVal { get; set; } /// <summary> /// 元位 /// </summary> public string DollarVal { get; set; } /// <summary> /// 拾位 /// </summary> public string TenVal { get; set; } /// <summary> /// 佰位 /// </summary> public string HundredVal { get; set; } /// <summary> /// 仟位 /// </summary> public string ThousandVal { get; set; } /// <summary> /// 万位 /// </summary> public string TenThousandVal { get; set; } /// <summary> /// 拾万位 /// </summary> public string MillionVal { get; set; } }
转换方法
/// <summary> /// 转换成大写金额(暂不统计负数) /// </summary> /// <param name="money"></param> /// <returns></returns> public static OrderReportStatisticsMoneyModel GetCapitalMoney(decimal money) { var model = new OrderReportStatisticsMoneyModel(); if (money > 0) { //去除金额无效的小数零 string moneyVal = money.ToString("0.##"); //分别统计小数点前面和后面金额 string[] moneySplit = moneyVal.Split('.'); if (moneySplit.Length > 0) { //统计小数点前面金额 string preMoney = moneySplit[0]; int iTemp = 0; while (iTemp < preMoney.Length) { string moneyCapitalVal = "零"; int currentMoneyLength = preMoney.Substring(iTemp).Length; switch (preMoney.Substring(iTemp, 1)) { case "0": moneyCapitalVal = "零"; break; case "1": moneyCapitalVal = "壹"; break; case "2": moneyCapitalVal = "贰"; break; case "3": moneyCapitalVal = "叁"; break; case "4": moneyCapitalVal = "肆"; break; case "5": moneyCapitalVal = "伍"; break; case "6": moneyCapitalVal = "陆"; break; case "7": moneyCapitalVal = "柒"; break; case "8": moneyCapitalVal = "捌"; break; case "9": moneyCapitalVal = "玖"; break; } switch (currentMoneyLength) { case 6: model.MillionVal = moneyCapitalVal; break; case 5: model.TenThousandVal = moneyCapitalVal; break; case 4: model.ThousandVal = moneyCapitalVal; break; case 3: model.HundredVal = moneyCapitalVal; break; case 2: model.TenVal = moneyCapitalVal; break; case 1: model.DollarVal = moneyCapitalVal; break; default: break; } iTemp++; } } if (moneySplit.Length > 1) { //统计小数点后面金额 string suffixMoney = (moneySplit[1] + "00").Substring(0, 2); int iTemp = 0; while (iTemp < suffixMoney.Length) { string moneyCapitalVal = "零"; int currentMoneyLength = suffixMoney.Substring(iTemp).Length; switch (suffixMoney.Substring(iTemp, 1)) { case "0": moneyCapitalVal = "零"; break; case "1": moneyCapitalVal = "壹"; break; case "2": moneyCapitalVal = "贰"; break; case "3": moneyCapitalVal = "叁"; break; case "4": moneyCapitalVal = "肆"; break; case "5": moneyCapitalVal = "伍"; break; case "6": moneyCapitalVal = "陆"; break; case "7": moneyCapitalVal = "柒"; break; case "8": moneyCapitalVal = "捌"; break; case "9": moneyCapitalVal = "玖"; break; } switch (currentMoneyLength) { case 2: model.DimeVal = moneyCapitalVal; break; case 1: model.MinVal = moneyCapitalVal; break; default: break; } iTemp++; } } } model.MinVal = string.IsNullOrEmpty(model.MinVal) ? "零" : model.MinVal; model.DimeVal = string.IsNullOrEmpty(model.DimeVal) ? "零" : model.DimeVal; model.DollarVal = string.IsNullOrEmpty(model.DollarVal) ? "零" : model.DollarVal; model.TenVal = string.IsNullOrEmpty(model.TenVal) ? "零" : model.TenVal; model.HundredVal = string.IsNullOrEmpty(model.HundredVal) ? "零" : model.HundredVal; model.ThousandVal = string.IsNullOrEmpty(model.ThousandVal) ? "零" : model.ThousandVal; model.TenThousandVal = string.IsNullOrEmpty(model.TenThousandVal) ? "零" : model.TenThousandVal; model.MillionVal = string.IsNullOrEmpty(model.MillionVal) ? "零" : model.MillionVal; return model; }
调用生成对应大写金额
decimal moneyVal = 23456.78M; var capitalMoney = GetCapitalMoney(moneyVal); string capitalVal = string.Format("{0} 拾 {1} 万 {2} 仟 {3} 佰 {4} 拾 {5} 元 {6} 角 {7} 分", capitalMoney.MillionVal, capitalMoney.TenThousandVal , capitalMoney.ThousandVal, capitalMoney.HundredVal , capitalMoney.TenVal, capitalMoney.DollarVal , capitalMoney.DimeVal, capitalMoney.MinVal); Console.WriteLine(capitalVal); Console.ReadKey();
和博主交个朋友吧