c# 金额小写转大写(财务金额)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public static string NumtoChinese( decimal s) { s = Math.Round(s, 2); //四舍五入到两位小数,即分 string [] n = { "零" , "壹" , "贰" , "叁" , "肆" , "伍" , "陆" , "柒" , "捌" , "玖" }; //数字转大写 string [] d = { "" , "分" , "角" , "元" , "拾" , "佰" , "仟" , "万" , "拾" , "佰" , "仟" , "亿" }; //不同位置的数字要加单位 List< string > needReplace = new List< string > { "零拾" , "零佰" , "零仟" , "零万" , "零亿" , "亿万" , "零元" , "零零" , "零角" , "零分" }; List< string > afterReplace = new List< string > { "零" , "零" , "零" , "万" , "亿" , "亿" , "元" , "零" , "" , "" }; //特殊情况用replace剔除 string e = s % 1 == 0 ? "整" : "" ; //金额是整数要加一个“整”结尾 string re = "" ; Int64 a = (Int64)(s * 100); int k = 1; while (a != 0) { //初步转换为大写+单位 re = n[a % 10] + d[k] + re; a = a / 10; k = k < 11 ? k + 1 : 4; } string need = needReplace.Where(tb => re.Contains(tb)).FirstOrDefault< string >(); while (need != null ) { int i = needReplace.IndexOf(need); re = re.Replace(needReplace[i], afterReplace[i]); need = needReplace.Where(tb => re.Contains(tb)).FirstOrDefault< string >(); } //循环排除特殊情况 re = re == "" ? "" : re + e; return re; } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
2016-07-08 C#工具类(包含获取枚举描述方法)