数字转化成大写金额(C#版)

 class NumProcess
    {

        #region 数值大写
        private const string Num1 = "壹";
        private const string Num2 = "贰";
        private const string Num3 = "参";
        private const string Num4 = "肆";
        private const string Num5 = "伍";
        private const string Num6 = "陆";
        private const string Num7 = "柒";
        private const string Num8 = "捌";
        private const string Num9 = "玖";
        private const string Num0 = "零";

        private const string NumShi = "拾";
        private const string NumBai = "佰";
        private const string NumQian = "仟";
        private const string NumWan = "萬";
        private const string NumYi = "亿";

        private const string Zheng = "整";
        private const string Yuan = "元";
        private const string Jiao = "角";
        private const string Fen = "分";

         
        #endregion


        #region 整数部分大写
        private static string GenerateDaXieLng(long lng)
        {
            if (lng>0 && lng<10)
            {
                return  DaXie(lng);
            }

            if (lng >=10 && lng < 100)
            {
                return GenerateDaXieLng(lng/10)+NumShi+GenerateDaXieLng(lng-lng/10*10);
            }

            if (lng >= 100 && lng < 1000)
            {
                return GenerateDaXieLng(lng/100)+NumBai
                    +(((lng-lng/100*100)<10 && (lng-lng/100*100)!=0)?Num0:"")
                    +GenerateDaXieLng(lng-lng/100*100);
            }

            if(lng>=1000 && lng<10000)
            {
                return GenerateDaXieLng(lng/1000)+NumQian
                    +(((lng-lng/1000*1000)<100 && (lng-lng/1000*1000)!=0)?Num0:"")
                +GenerateDaXieLng(lng-lng/1000*1000);
            }

            if(lng>=10000 && lng<100000000)
            {
                return GenerateDaXieLng(lng / 10000) + NumWan
                    + (((lng - lng / 10000 * 10000) < 1000 && (lng - lng / 10000) != 0) ? Num0 : "")
                + GenerateDaXieLng(lng - lng / 10000 * 10000);
            }

            if (lng >= 100000000)
            {
                return GenerateDaXieLng(lng / 10000000) + NumYi
                    + ((lng - lng / 100000000 * 100000000 < 10000000 && (lng - lng / 100000000 * 100000000) != 0) ? Num0 : "")

                + GenerateDaXieLng(lng - lng / 100000000 * 100000000);
            }

            return "";
        }

        #endregion


        #region 获取单个数对应的大写
        private static string DaXie(long i)
        {
            switch(i)
            {
                case 9:
                     return Num9;
                   
                case 8:
                     return Num8;
                   
                case 7:
                    return Num7;
                   
                case 6:
                    return Num6;
                   
                case 5:
                    return Num5;
                   
                case 4:
                    return Num4;
                   
                case 3:
                    return Num3;
                   
                case 2:
                    return Num2;
                   
                case 1:
                    return Num1;
                   
                default:
                    return Num0;
                   
            }
          }

        #endregion


        #region 获取小数部分大写
         private static string GenerateDaXiePoint(decimal dec)
         {
             if (dec == 0) return Zheng;
            string str = dec.ToString();
            str = str.Substring(str.IndexOf(".") + 1);
            return DaXie(Convert.ToInt64(str.Substring(0,1)))+Jiao+DaXie(Convert.ToInt64(str.Substring(1,1)))+Fen;
         }

       #endregion


        public static string GenerateDaXieNum(decimal dec)
        {
            string sign="";

            if (dec < 0)
            {
                sign = "负";
                dec = -1 * dec;
            }

            int idec =(int) Math.Truncate(dec);
            return sign+ GenerateDaXieLng(idec) + Yuan + GenerateDaXiePoint(dec - idec);
       
          
        }


      }

参考:CSDN:http://community.csdn.net/Expert/topic/4731/4731265.xml?temp=.5906946  xsxcjj同志的算法

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值