C#数字小写转大写

原创 2016年05月31日 09:09:21
//金额转换为大写
    public static string CmycurD(decimal num)
    {
        string str1 = "零壹贰叁肆伍陆柒捌玖";               //0-9所对应的汉字
        string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分";     //数字位所对应的汉字
        string str3 = "";                                   //从原num值中取出的值
        string str4 = "";                                   //数字的字符串形式
        string str5 = "";                                   //人民币大写金额形式
        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 (int 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;
    }

C# 将小写数字转换为 一般中文大写数字 和 人民币大写数字

网络转载 class DigitToChnText {     private readonly char[] chnGenText;     private readonly char[] ...
  • ty_soft
  • ty_soft
  • 2012年03月04日 23:20
  • 3190

.NET把小写数字金额转换成大写人民币金额的两种算法

private string DaXie(string money) { //将小写金额转换成大写金额 double MyNumber = Co...
  • flyingdream123
  • flyingdream123
  • 2016年07月22日 11:19
  • 2106

关于把小写数字转化为大写数字的java代码

import java.math.BigDecimal;public class ConvertNumber { /** 定义数组存放数字对应的大写 */ private final static...
  • billfranck
  • billfranck
  • 2009年08月21日 17:39
  • 7395

C#人民币金额大写转换

人民币金额大小写转换,三行代码 //完善了一下查询到的方法,支持小数,保留2位小数 完善了一下查询到的方法,支持小数,保留2位小数 public string NumGetStr(double Nu...
  • CommandBaby
  • CommandBaby
  • 2015年11月28日 14:00
  • 2871

C#数字转大写

using System; namespace ManPowerManage.BussinessRule { /// /// DecimalToUpper 的摘要说明。 /// ...
  • sscsgss
  • sscsgss
  • 2011年09月29日 14:55
  • 2726

js 数字金额大小写转换成中文大写

function Arabia_to_Chinese(Num) { for(i=Num.length-1;i>=0;i--) { Num = Num.replace(",","")//替换to...
  • lychao89
  • lychao89
  • 2016年08月12日 10:02
  • 3002

java将大写数字转换成小写并输出

import java.util.Scanner; public class Low { //lowNumber方法将大写数字转换成小写并输出 private static void lowNu...
  • lzl_Avery
  • lzl_Avery
  • 2017年04月10日 21:52
  • 637

大写金额转换成小写

Q:如何将大写金额转换成小写? A:简单点,格式比较严格private float getMoney(string strBig)        ...{            string strE...
  • jinjazz
  • jinjazz
  • 2007年12月04日 19:11
  • 2441

数字大小写转换PHP代码

  • u013372487
  • u013372487
  • 2015年08月22日 13:46
  • 2194

JS金额小写转大写

function atoc(numberValue){var numberValue=new String(Math.round(numberValue*100)); // 数字金额var chine...
  • qiume
  • qiume
  • 2010年04月21日 23:13
  • 6252
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#数字小写转大写
举报原因:
原因补充:

(最多只允许输入30个字)