C# 金额数字转中文的方法

复制代码
        /// <summary>
        /// 金额数字转大写(带小数点)
        /// </summary>
        public static string PriceToCn(decimal price)
        {
            //数字转大写
            string[] n = { "", "", "", "", "", "", "", "", "", "" };
            string[] d = { "", "", "", "", "", "", "", "", "", "", "", "亿" };

            //不同位置的数字要加单位
            List<string> needReplace = new List<string> { "零拾", "零佰", "零仟", "零万", "零亿", "亿万", "零元", "零零", "零角", "零分" };
            List<string> afterReplace = new List<string> { "", "", "", "", "亿", "亿", "", "", "", "" };

            string e = price % 1 == 0 ? "" : "";  //金额是整数,加一个“整”结尾
            string re = "";
            int a = (int)(price * 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 @   Nine_Jason  阅读(498)  评论(2编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示