金额小写变大写 C#版

    /// <summary>
        
/// 金额小写变大写
        
/// </summary>
        
/// <param name="smallnum"></param>
        
/// <returns></returns>

        public static string gMoney(decimal smallnum)                                                                                
        
{
            
string cmoney , cnumber, cnum, cnum_end,cmon ,cno,snum ,sno;
            
int snum_len , sint_len, cbegin, zflag , i;
            
if(smallnum > 1000000000000 || smallnum < -99999999999 || smallnum == 0)
                
return "";
            cmoney 
= "仟佰拾亿仟佰拾万仟佰拾元角分" ;// 大写人民币单位字符串
            cnumber = "壹贰叁肆伍陆柒捌玖"          ;// 大写数字字符串
            cnum = ""                               ;// 转换后的大写数字字符串
            cnum_end = ""                           ;// 转换后的大写数字字符串的最后一位
            cmon = ""                               ;// 取大写人民币单位字符串中的某一位
            cno = ""                                ;// 取大写数字字符串中的某一位


            
            snum 
= Round(smallnum,2).ToString("############.00");  ;// 小写数字字符串
            snum_len = snum.Length                  ;// 小写数字字符串的长度
            sint_len = snum_len - 2                 ;// 小写数字整数部份字符串的长度
            sno = ""                                ;// 小写数字字符串中的某个数字字符
            cbegin = 15 - snum_len                  ;// 大写人民币单位中的汉字位置
            zflag = 1                               ;// 小写数字字符是否为0(0=0)的判断标志
            i = 0                                   ;// 小写数字字符串中数字字符的位置

            
if(snum_len > 15)
                
return "";
            
for(i=0;i<snum_len;i++
            
{
                
if (i==sint_len-1)
                    
continue;

                
                cmon 
= cmoney.Substring(cbegin, 1);
                cbegin 
= cbegin + 1;
                sno 
=snum.Substring(i,1);
                
if (sno=="-")
                
{
                    cnum 
= cnum + "";
                    
continue;
                }

                
else if(sno=="0")
                
{
                    cnum_end 
= cnum.Substring(cnum.Length-2,1);
                    
if(cbegin == 4 || (cbegin == 8 || cnum_end.IndexOf("亿")>=0|| cbegin == 12 ))
                    
{
                        cnum 
= cnum + cmon;
                        
if (cnumber.IndexOf(cnum_end)>=0 )
                            zflag 
= 1;
                        
else
                            zflag 
= 0;
                    }

                    
else
                    
{
                        zflag 
= 0;
                    }

                    
continue;
                }

                
else if( sno != "0" && zflag == 0)
                
{
                    cnum 
= cnum + "";
                    zflag 
= 1;
                }

                cno 
=cnumber.Substring(System.Convert.ToInt32(sno)-11);
                cnum 
= cnum + cno + cmon;
            }

            
if (snum.Substring(snum.Length-2,1)=="0")
            
{
                
return  cnum + "";
            }

            
else
                
return cnum;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值