C# 金额转换,金额数字转换人民币大写


C# 金额数字转换成人民币大写:零壹贰叁肆伍陆柒捌玖,万仟佰拾亿仟佰拾万仟佰拾元角分

直接上代码:

 /// <summary>
/// 转换人民币大写金额。
/// </summary>
public class RMBConverter
{
    /// <summary>
    /// 转换人民币大小金额
    /// </summary>
    /// <param name="num">金额</param>
    /// <returns>返回大写形式</returns>
    public static string toRMB(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所以str2=佰拾元角分
                                       //循环取出每一位需要转换的值
        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;
    }

}
GarsonZhang www.yesdotnet.com

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
YES开发框架
上一篇:IIS程序池回收配置
下一篇:Devexpress RibbonControl设置大全
评论列表

发表评论

评论内容
昵称:
关联文章

C# 金额转换金额数字转换人民币大写
C#类型转换,对象转换
C# 中将byte转换为int和int转换为byte
C# 根据DataTable 转换成JSON 文本字符串数据
DevExpress 使用GridControl 会计凭证财务金额分位显示
c# 将数组或集合 转换成以逗号分隔的字符串
IVIEW FORM验证 验证数字
C# RSA加密(私钥加密、公钥解密、密钥格式转换、支持超大长度分段加密)
智能转换文件大小单位B,KB,MB,GB
EF 值转换
ag-grid内容格式化显示 金额两位小数
C#的进化——C#发展史、C#1.0-10.0语法系统性梳理、C#与JAVA的对比
C#和java对URL编码(UrlEncode)的差异
实现 Input 只能输入数字两位小数点,不闪烁方案
支付宝支付对接,当面付,根据金额生成付款二维码
C#性能优化总结
C#汉字转拼音
JQuery将form表单转换为json,并提交后台处理
C#四舍五入的正确方式Math.Round
C# 执行Javascript脚本

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码