zoukankan      html  css  js  c++  java
  • 大写金额转换成小写

    Q:如何将大写金额转换成小写?

    A:简单点,格式比较严格

    private   float  getMoney( string  strBig)
            
    {
                
    string  strExp = "" ;
                
    string [] arrBig   =   new   string []  " " , "" , " " , " +0 " , " " , " +1 " , " " , " +2 " , " " , " +3 " , " " , " +4 " , " " , " +5 " , " " , " +6 " , " " , " +7 " , " " , " +8 " , " " , " +9 " " " , " *0.01 " , " " , " *0.1 " , " " , " *1 " , " " , " *10.00 " , " " , " *100.00 " , " " , " *1000.00 " , " " , " *10000.00 " , " 亿 " , " *100000000.00 " } ;
                
    for  ( int  i  =   0 ; i  <  strBig.Length; i ++ )
                
    {
                    
    for  ( int  j  =   0 ; j  <  arrBig.Length - 1 ;j += 2  )
                    
    {
                        
    if  (arrBig[j]  ==  strBig[i].ToString())
                        
    {
                            strExp 
    +=  arrBig[j  +   1 ].ToString();
                            
    continue ;
                        }

                    }

                }


                
    object   ret = new  DataTable().Compute(strExp,  "" );
                
    return   float .Parse(ret.ToString());
                
    // Console.WriteLine(getMoney("玖仟零贰拾壹元陆角肆分"));
                
    // Console.WriteLine(getMoney("玖仟万亿零贰拾壹元陆角肆分"));
            }

     伴水兄的这个较狠

    public   double  DecodeMoneyCn( string  AText)
    {
        AText 
    =  AText.Replace( " 万万 " " 亿 " );
        AText 
    =  AText.Replace( " " " " );
        AText 
    =  AText.Replace( " " " " );
        AText 
    =  AText.Replace( " " " " );
        
    double  vResult  =   0 ;
        
    double  vNumber  =   0 //  当前数字
         double  vTemp  =   0 ;
        
    int  vDecimal  =   0 //  是否出现小数点
         foreach  ( char  vChar  in  AText)
        
    {
            
    int  i  =   " 零一二三四五六七八九 " .IndexOf(vChar);
            
    if  (i  <   0 ) i  =   " 零幺两三四五六七八九 " .IndexOf(vChar);
            
    if  (i  <   0 ) i  =   " 零壹贰叁肆伍陆柒捌玖 " .IndexOf(vChar);
            
    if  (i  >   0 )
            
    {
                vNumber 
    =  i;
                
    if  (vDecimal  >   0 )
                
    {
                    vResult 
    +=  vNumber  *  Math.Pow( 10 - vDecimal);
                    vDecimal
    ++ ;
                    vNumber 
    =   0 ;
                }

            }

            
    else
            
    {
                i 
    =   " 元十百千万亿 " .IndexOf(vChar);
                
    if  (i  <   0 ) i  =   " 整拾佰仟万亿 " .IndexOf(vChar);
                
    if  (i  ==   5 ) i  =   8 ;
                
    if  (i  >   0 )
                
    {
                    
    if  (i  >=   4 )
                    
    {
                        vTemp 
    +=  vNumber;
                        
    if  (vTemp  ==   0 ) vTemp  =   1 ;
                        vResult 
    +=  vTemp  *  Math.Pow( 10 , i);
                        vTemp 
    =   0 ;
                    }

                    
    else  vTemp  +=  vNumber  *  Math.Pow( 10 , i);
                }

                
    else
                
    {
                    i 
    =   " 元角分 " .IndexOf(vChar);
                    
    if  (i  >   0 )
                    
    {
                        vTemp 
    +=  vNumber;
                        vResult 
    +=  vTemp  *  Math.Pow( 10 - i);
                        vTemp 
    =   0 ;
                    }

                    
    else   if  (i  ==   0 )
                    
    {
                        vTemp 
    +=  vNumber;
                        vResult 
    +=  vTemp;
                        vDecimal 
    =   1 ;
                        vTemp 
    =   0 ;
                    }

                }

                vNumber 
    =   0 ;
            }

        }

        
    return  vResult  +  vTemp  +  vNumber;
    }


    private   void  button2_Click( object  sender, EventArgs e)
    {
        
    string [] vTestText  =  
            
    " 十二点五六 "
            
    " 一亿零一万零五 "
            
    " 四万万 "
            
    " 九十八亿七千六百五十四万三千二百一十 " ,
            
    " 五元一角四分 " " 壹佰元整 " ,
            
    " 三千五百万 " ,
            
    " 九块二毛 " }
    ;
        
    foreach  ( string  vText  in  vTestText)
        
    {
            Console.WriteLine(
    " DecodeMoneyCn("{0}")={1} " , vText, 
                DecodeMoneyCn(vText));
        }

    }

  • 相关阅读:
    html5传感器
    html5 canvas手写字代码(兼容手机端)
    PHP pdo单例模式连接数据库
    PHP变量回收
    PHP不过过滤防止xss攻击的方法
    jquery监听回车
    jquery预加载显示百分比
    创建自己的代码仓库
    Luxurious Houses
    Vasya the Hipster
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6204981.html
Copyright © 2011-2022 走看看