c#货币金额大写转换方法

C#数字金额转人民币大写金额的实现 要过年了,朋友圈里充斥着各种年的味道,还有一种特别的朋友圈今年格外显眼,好像一股气流冲击着我的小心脏,2022真的是太难了。这里,专门为各位老板写了一套数字金额转人民币大写金额的实现方法,希望大家都能过个好年,希望来年大家都不再为了那二两碎银而心烦。 阅读详情

public static string CmycurD(decimal num)
        {
            string str1 = "零壹贰叁肆伍陆柒捌玖";            //0-9所对应的汉字
            string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字
            string str3 = "";    //从原num值中取出的值
            string str4 = "";    //数字的字符串形式
            string str5 = "";  //人民币大写金额形式
            int i;    //循环变量
            int j;    //num的值乘以100的字符串长度
            string ch1 = "";    //数字的汉语读法
            string ch2 = "";    //数字位的汉字读法
            int nzero = 0;  //用来计算连续的零值是几个
            int temp;            //从原num值中取出的值
        
            num = Math.Round(Math.Abs(num),2);    //将num取绝对值并四舍五入取2位小数
            str4 = ((long)(num*100)).ToString();        //将num乘100并转换成字符串形式
            j = str4.Length;      //找出最高位
            if (j > 15){return "溢出";}
            str2 = str2.Substring(15-j);   //取出对应位数的str2的值。如:200.55,j为5所以tr2=佰拾元角分
              
            //循环取出每一位需要转换的值
            for(i=0;i<j;i++)
            {
                str3 = str4.Substring(i,1);          //取出需转换的某一位的值
                temp = Convert.ToInt32(str3);      //转换为数字
                if (i != (j-3) && i != (j-7) && i != (j-11) && i != (j-15))
                {    
                    //当所取位数不为元、万、亿、万亿上的数字时
                    if (str3 == "0")
                    {
                        ch1 = "";
                        ch2 = "";
                        nzero = nzero + 1;
                    }
                    else
                    {
                        if(str3 != "0" && nzero != 0)
                        {
                            ch1 = "零" + str1.Substring(temp*1,1);
                            ch2 = str2.Substring(i,1);
                            nzero = 0;
                        }
                        else
                        {
                            ch1 = str1.Substring(temp*1,1);
                            ch2 = str2.Substring(i,1);
                            nzero = 0;
                        }
                    }
                }
                else
                {  
                    //该位是万亿,亿,万,元位等关键位
                    if (str3 != "0" && nzero != 0)
                    {
                        ch1 = "零" + str1.Substring(temp*1,1);
                        ch2 = str2.Substring(i,1);
                        nzero = 0;
                    }
                    else
                    {
                        if (str3 != "0" && nzero == 0)
                        {
                            ch1 = str1.Substring(temp*1,1);
                            ch2 = str2.Substring(i,1);
                            nzero = 0;
                        }
                        else
                        {
                            if (str3 == "0" && nzero >= 3)
                            {
                                ch1 = "";
                                ch2 = "";
                                nzero = nzero + 1;
                            }
                            else
                            {
                                if (j >= 11)
                                {
                                    ch1 = "";
                                    nzero = nzero + 1;
                                }
                                else
                                {
                                    ch1 = "";
                                    ch2 = str2.Substring(i,1);
                                    nzero = nzero + 1;
                                }
                            }
                        }
                    }
                }
                if (i == (j-11) || i == (j-3))
                {  
                    //如果该位是亿位或元位,则必须写上
                    ch2 = str2.Substring(i,1);
                }
                str5 = str5 + ch1 + ch2;
    
                if (i == j-1 && str3 == "0" )
                {    
                    //最后一位(分)为0时,加上“整”
                    str5 = str5 + '整';
                }
            }
            if (num == 0)
            {
                str5 = "零元整";
            }
            return str5;
        }


二、

 程序代码
// 货币金额大写转换库   Money2String.dll

// 静态中文转换方法     String GetCnString(String MoneyString)
// 最大转化金额         9999999999999999.99  (16位整数位,2位小数位)
// 方法返回值           转换成功则返回非零长字串,否则返回零长字串

// 静态英文转换方法     String GetEnString(String MoneyString)
// 最大转化金额         999999999999999.99   (15位整数位,2位小数位)
// 方法返回值           转换成功则返回非零长字串,否则返回零长字串


// 程序设计 xlFancy     版本 2003.03.18.22 - 2003.04.09
// 邮箱地址 xlfancy@21cn.com

using System;

namespace Money2String
{
    public class Money2String
    {

        private static readonly String   cnNumber      = "零壹贰叁肆伍陆柒捌玖";
        private static readonly String   cnUnit        = "分角元拾佰仟万拾佰仟亿拾佰仟兆拾佰仟";

        private static readonly String[] enSmallNumber = {"","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","TEN","ELEVEN","TWELVE","THIRTEEN","FOURTEEN","FIFTEEN","SIXTEEN","SEVENTEEN","EIGHTEEN","NINETEEN"};
        private static readonly String[] enLargeNumber = {"TWENTY","THIRTY","FORTY","FIFTY","SIXTY","SEVENTY","EIGHTY","NINETY"};
        private static readonly String[] enUnit        = {"","THOUSAND","MILLION","BILLION","TRILLION"};


        // 以下是货币金额中文大写转换方法
        public static String GetCnString(String MoneyString)
        {
            String [] tmpString  = MoneyString.Split('.');
            String    intString  = MoneyString;   // 默认为整数
            String    decString  = "";            // 保存小数部分字串
            String    rmbCapital = "";            // 保存中文大写字串
            int       k;
            int       j;
            int       n;

            if (tmpString.Length>1)
            {
                intString = tmpString[0];             // 取整数部分
                decString = tmpString[1];             // 取小数部分
            }
            decString += "00";
            decString  = decString.Substring (0,2);   // 保留两位小数位
            intString += decString;

            try
            {
                k = intString.Length -1;
                if (k>0 && k<18)
                {
                    for (int i=0;i<=k;i++)
                    {
                        j=(int)intString[i]-48;
                        // rmbCapital = rmbCapital + cnNumber[j] + cnUnit[k-i];     // 供调试用的直接转换
                        n = i+1 >= k ? (int)intString[k]-48:(int)intString[i+1]-48; // 等效于 if( ){ }else{ }
                        if (j==0)
                        {
                            if(k-i==2 || k-i==6 || k-i==10 || k-i==14)
                            {
                                rmbCapital += cnUnit[k-i];
                            }
                            else
                            {
                                if (n != 0)
                                {
                                    rmbCapital  += cnNumber[j];
                                }
                            }
                        }
                        else
                        {
                            rmbCapital = rmbCapital + cnNumber[j] + cnUnit[k-i];
                        }
                    }

                    rmbCapital = rmbCapital.Replace ("兆亿万","兆");
                    rmbCapital = rmbCapital.Replace ("兆亿","兆");
                    rmbCapital = rmbCapital.Replace ("亿万","亿");
                    rmbCapital = rmbCapital.TrimStart('元');
                    rmbCapital = rmbCapital.TrimStart('零');

                    return rmbCapital;
                }
                else
                {
                    return "";   // 超出转换范围时,返回零长字串
                }
            }
            catch
            {
                return "";   // 含有非数值字符时,返回零长字串
            }
        }


        // 以下是货币金额英文大写转换方法
        public static String GetEnString(String MoneyString)
        {
            String [] tmpString  = MoneyString.Split('.');
            String    intString  = MoneyString;   // 默认为整数
            String    decString  = "";            // 保存小数部分字串
            String    engCapital = "";            // 保存英文大写字串
            String    strBuff1;
            String    strBuff2;
            String    strBuff3;
            int       curPoint;
            int       i1;
            int       i2;
            int       i3;
            int       k;
            int       n;
    
            if (tmpString.Length >1)
            {
                intString = tmpString[0];             // 取整数部分
                decString = tmpString[1];             // 取小数部分
            }
            decString += "00";
            decString  = decString.Substring (0,2);   // 保留两位小数位
    
            try
            {
                // 以下处理整数部分
                curPoint = intString.Length-1;
                if (curPoint>=0 && curPoint<15)
                {
                    k = 0;
                    while(curPoint>=0)
                    {
                        strBuff1 = "";
                        strBuff2 = "";
                        strBuff3 = "";
                        if (curPoint>=2)
                        {
                            n=int.Parse(intString.Substring(curPoint-2,3));
                            if (n !=0)
                            {
                                i1 = n/100;            // 取佰位数值
                                i2 = (n-i1*100)/10;    // 取拾位数值
                                i3 = n-i1*100-i2*10;   // 取个位数值
                                if (i1 !=0)
                                {
                                    strBuff1 = enSmallNumber[i1] + " HUNDRED ";
                                }
                                if (i2!=0)
                                {
                                    if (i2==1)
                                    {
                                        strBuff2 = enSmallNumber[i2*10+i3] + " ";
                                    }
                                    else
                                    {
                                        strBuff2 = enLargeNumber[i2-2] + " ";
                                        if (i3 !=0)
                                        {
                                            strBuff3 = enSmallNumber[i3] + " ";
                                        }
                                    }
                                }
                                else
                                {
                                    if (i3 !=0)
                                    {
                                        strBuff3 = enSmallNumber[i3] + " ";
                                    }
                                }
                                engCapital = strBuff1 + strBuff2 + strBuff3 + enUnit[k] + " " + engCapital;    
                            }
                        }
                        else
                        {
                            n = int.Parse(intString.Substring(0,curPoint+1));
                            if (n !=0)
                            {
                                i2 = n/10;      // 取拾位数值
                                i3 = n-i2*10;   // 取个位数值
                                if (i2!=0)
                                {
                                    if (i2==1)
                                    {
                                        strBuff2 = enSmallNumber[i2*10+i3] + " ";
                                    }
                                    else
                                    {
                                        strBuff2 = enLargeNumber[i2-2] + " ";
                                        if (i3 !=0)
                                        {
                                            strBuff3 = enSmallNumber[i3] + " ";
                                        }
                                    }
                                }
                                else
                                {
                                    if (i3 !=0)
                                    {
                                        strBuff3 = enSmallNumber[i3] + " ";
                                    }
                                }
                                engCapital = strBuff2 + strBuff3 + enUnit[k] + " " + engCapital;
                            }
                        }
            
                        ++k;
                        curPoint -= 3;
                    }
                    engCapital = engCapital.TrimEnd();
                }

    
                // 以下处理小数部分
                strBuff2 = "";
                strBuff3 = "";
                n = int.Parse(decString);
                if (n !=0)
                {
                    i2 = n/10;      // 取拾位数值
                    i3 = n-i2*10;   // 取个位数值
                    if (i2!=0)
                    {
                        if (i2==1)
                        {
                            strBuff2 = enSmallNumber[i2*10+i3] + " ";
                        }
                        else
                        {
                            strBuff2 = enLargeNumber[i2-2] + " ";
                            if (i3 !=0)
                            {
                                strBuff3 = enSmallNumber[i3] + " ";
                            }
                        }
                    }
                    else
                    {
                        if (i3 !=0)
                        {
                            strBuff3 = enSmallNumber[i3] + " ";
                        }
                    }

                    // 将小数字串追加到整数字串后
                    if (engCapital.Length>0)
                    {
                        engCapital = engCapital + " AND CENTS " + strBuff2+strBuff3;   // 有整数部分时
                    }
                    else
                    {
                        engCapital = "CENTS " + strBuff2 + strBuff3;   // 只有小数部分时
                    }
                }    

                engCapital = engCapital.TrimEnd();
                return engCapital;
            }
            catch
            {
                return "";   // 含非数字字符时,返回零长字串
            }
        }
    }
}
C#金额小写转大写 public string ConvertMoney(decimal Money) { //金额转换程序 string MoneyNum = "";//记录小写金额字符串[输入参数] string MoneyStr = "";//记录大写金额字符串[输出参数] string BNumSt 阅读详情

相关推荐

VMware 17+Win10 22H2全栈配置指南|UEFI优化+GPU直通实战

​VMware下载:下载官网版本的Wmare 17 Pro (点击直达链接 )企业用户可选永久许可证,个人学习也可以直接安装使用,Win10镜像:微软官网下载22H2版ISO文件(附官方纯净版渠道 )

waicsdn_haha的博客 4021

C# 大写金额转换

【代码】C# 大写金额转换。

qq_37901995的博客 321

毫米波雷达入门知识

毫米波雷达入门知识

ssbzxcvbnm1234567的博客 5446

C#人民币金额大写

这是一项经典编程题,笔者也曾将此题作为面试题。1.业务要求。人民币大写金额用到的汉字主要包括零、壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿等。人民币大写金额有如下注意事项:中文大写金额数字到“元”为止的,在“元”之后、应写“整”(或“正”)字;在“角”之后,可以不写“整”(或“正”)字;大写金额数字有“分”的,“分”后面不写“整”(或“正”)字。

.NET开源应用程序框架 HYAppFrame 4337

机器学习---xgboost算法

问题上表现的十分顶尖,本节将较详细的介绍XGBoost的算法原理。成和剪枝分别对应了经验风险最小化和结构风险最小化, XGBoost的决策树生成是结构风险最小。式(1.1)称为经验风险最小化,训练得到的模型复杂度较高。出结果, 是模型的输出结果;等式右边第⼀部分是模型的训练误差,第⼆部分是正则化项,这里。其中,F是假设空间,假设空间是在已知属性和属性可能取值的情况下,对所有可能满足目标的情。最小化,结构风险最小化的模型往往对训练数据以及未知的测试数据都有较好的预测。的正则化项是K棵树的正则化项相加而来的。

weixin_43961909的博客 1万+

RDM协议控制端实战:从数据包构造到高效设备发现算法

本文深入探讨了RDM协议控制端的核心开发流程,涵盖从数据包构造、发送到响应解析的全过程。重点解析了如何利用二分搜寻算法高效实现网络设备发现,并分享了组包、解包中的关键代码实现与常见调试技巧,为舞台灯光与智能硬件领域的嵌入式开发提供实战指导。

week9的博客 457

C#人民币大小写金额转换(C#版本)

1.调用    ConvertIntToUppercaseAmount(String value)  即可           ////      /// 人民币大小写金额转换     ///     class RMBCapitalization     {         private const string DXSZ = "零壹贰叁肆伍陆柒捌玖";

晴朗_Raymond 1万+

Ubuntu24.04下Librenms的完整安装与配置指南

本文提供了在Ubuntu 24.04 LTS系统上完整安装与配置LibreNMS网络监控系统的详细指南。内容涵盖系统环境准备、依赖安装、源码获取、PHP/数据库/Nginx配置、Composer安装、网页向导设置以及设备添加与日常使用,帮助用户快速部署一套功能强大的开源网络监控解决方案。

tgb3456789的博客 1139

人民币转大写

为自己留档 #region 人民币小写转大写         private static String[] Ls_ShZ = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" };         private static String[] Ls_DW_Zh = { "元", "拾", "佰", "仟", "万",

期盼的骆驼专栏 811

Amazon SES 移出沙盒完整指南 & 高通过率模板

AWS SES沙盒模式转正式模式申请指南 申请正式模式需通过AWS审核,常见被拒原因包括邮件用途不清晰、缺少退订机制或发送量不合理。人工申诉需登录AWS Support Center提交服务限额提升请求,填写详细的公司信息、邮件用途及合规措施。 高通过率申诉模板需包含: 公司信息:名称、网址及与AWS的合作情况。 邮件规范:明确类型(交易/营销)、退订链接及退信处理机制。 发送计划:合理预估发送量,确保合规。 关键点:真实信息、用途清晰、退订机制完善、发送量合理。首次被拒可修改后重新提交。

xianyinsuifeng的博客 329

uni-app - 最新实现将 uniapp 项目打包编译为 H5 网站,并上传部署到 web 服务器进行发布预览(从打包到发布完整流程步骤,Hbuilder 编译打包 h5 发行到 web 服务器)

uniapp,打包h5,打包编译H5网站,怎么打包h5,uniapp打包成H5部署到服务器教程,uniapp打包H5页面发布到服务器,uniapp开发,打包成H5部署到服务器_uniapp打包h5,uniapp如何打包h5项目,怎么把项目打包成H5,uniapp如何打包成H5并且放到web端上,打包成h5部署到服务器的步骤,打包发行到h5报错怎么办,如何将uniapp打包的h5网站放到服务器上,编译打包后怎么放到web服务器中,如何将uniapp开发的H5打包并部署到服务器,部署使用uniapp开发的h5

🏆 前端领域优质创作者 1万+

C# 货币金额中文(英文)大写转换方法-工具类

public static class Money { private static readonly String cnNumber = "零壹贰叁肆伍陆柒捌玖"; private static readonly String cnUnit = "分角元拾佰仟万拾佰仟亿拾佰仟兆拾佰仟"; private static re...

weixin_30832351的博客 452

【OpenClaw从入门到精通】第11篇:OpenClaw 2026多模态实战全攻略:OCR/语音/图像自动化(附完整代码+双部署方案)

本文聚焦OpenClaw 2026版核心升级的多模态能力,从底层架构原理到实操落地全流程拆解。先解析“统一指令解析+多工具适配器”的核心设计逻辑,再提供阿里云规模化部署(适合批量任务)与本地汉化版部署(适合隐私数据调试)的详细步骤,含依赖安装、配置验证完整操作;随后落地三大高频实战场景——OCR合同信息结构化提取、会议录音自动转写纪要、电商商品图片智能打标,每个场景均提供可直接运行的完整代码、执行结果演示及流程说明;最后补充多模态任务避坑指南、性能优化技巧与成本控制方案。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2613

C#中把货币、日期转换成中文大写

日期转换代码如下: /**////<summary> ///日期转换为中文大写 ///</summary> publicclassUpperConvert { publicUpperConvert() { // //TODO:在此处添加构造函数逻辑 // } ...

weixin_30894583的博客 110

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

[收藏|转贴]货币金额大写转换库(C#)

货币金额大写转换库http://www.vckbase.com/bbs/prime/viewprime.asp?id=576// 货币金额大写转换库   Money2String.dll// 静态中文转换方法     String GetCnString(String MoneyString)// 最大转化金额         9999999999999999.99  (16位整数位,2位小数位)

祝紫山(大可山人)博客[GDI+,WPF, .Net图形图像] 6155

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

人民币大写转数字

public static String ConvertToChinese(double number) { var s = number.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A"); var d = Regex.Rep...

weixin_33798152的博客 211

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

将货币转换为大写形式用c语言,C#:小写金额转换为大写

#region 小写金额转换为大写public static string CurrToChnNum(double Currnum){string sResult = "";if (Math.Abs(Currnum) < 1e-20)return "零圆整";if (Currnum < 1e-20)sResult = "负";sResult = sResult + StringToCh...

weixin_28761983的博客 1569

C#将货币金额数字转大写汉字

用正则表达式对输入的数字判断是否符合货币格式,小数点前的数字串的长度是否不大于13。

wenchm的博客 1216

C#金额小写变大写

/**/ /// /// C#金额小写变大写 /// /// /// public static string gMoney(decimal smallnum) { string cmoney, cnumber, cnum, cn

.net的专栏 790

ASP.NET C# 货币转换函数 中文大写金额 英文金额

using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using Sys

2255

货币金额大写转换2

using System;namespace JiajieERP{    ///     /// clsNumtoCapital 的摘要说明。    ///     public class clsNumtoCapital    {        private   static   string   []   HanDigiStr   =   {"零","壹","贰","叁","肆","伍","

doublewang的专栏 2405

人民币金额转大写

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Text.RegularExpressions; using...

weixin_40333655的博客 433

C# 金额转为大写金额

/// <summary> /// 金额转为大写金额 /// </summary> public class MoneyConvertChinese { /// <summary> /// 金额转为大写金额 /// </summary> ...

dengtai4781的博客 280

将数字金额转换成大写金额dll

public class MoneyConvertChinese { /// <summary> ///金额转换成大写 /// </summary> /// <param name="LowerMoney">要转换的金额</param> /// <retu...

dianguanjiao7862的博客 209

金额转换为人民币大写(C#)

1usingSystem;23namespaceTestUpperRMB4{5/**////<summary>6///本类实现阿拉伯数字到大写中文的转换7///该类没有对非法数字进行判别,请事先自己判断数字是否合法8///</summary>9publicclassC...

always_me2333的博客 1367
下一篇: C#常用的正则表达式
abel_fly
博客等级 码龄17年 15粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值