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;
}

  

posted on   itjeff  阅读(307)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
历史上的今天:
2016-07-08 C#工具类(包含获取枚举描述方法)

导航

< 2025年2月 >
26 27 28 29 30 31 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 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示