数字转换大写


    ///  
   
///  转换数字金额主函数(包括小数)
   
///  
   
///  数字字符串
   
///  转换成中文大写后的字符串或者出错信息提示字符串
    public   string  ConvertSum( string  str)
   {
    
if ( ! IsPositveDecimal(str))
    
return   " 输入的不是正数字! " ;
    
if (Double.Parse(str) > 999999999999.99 )
    
return   " 数字太大,无法换算,请输入一万亿元以下的金额 "
    
char [] ch = new   char [ 1 ];
    ch[
0 ] = ' . ' // 小数点
     string [] splitstr = null // 定义按小数点分割后的字符串数组
    splitstr = str.Split(ch[ 0 ]); // 按小数点分割字符串
     if (splitstr.Length == 1 // 只有整数部分
     return  ConvertData(str) + " 圆整 " ;
    
else   // 有小数部分
    {
    
string  rstr;
    rstr
= ConvertData(splitstr[ 0 ]) + " " ; // 转换整数部分
    rstr += ConvertXiaoShu(splitstr[ 1 ]); // 转换小数部分
     return  rstr;
    }
   
   }
   
///  
   
///  判断是否是正数字字符串
   
///  
   
///  判断字符串
   
///  如果是数字,返回true,否则返回false
    public   bool  IsPositveDecimal( string  str)
   {
    Decimal d;
    
try
    {
    d
= Decimal.Parse(str);
    
    }
    
catch (Exception)
    {
    
return   false ;
    }
    
if (d > 0 )
   
return   true ;
   
else  
   
return   false ;
   }
   
///  
   
///  转换数字(整数)
   
///  
   
///  需要转换的整数数字字符串
   
///  转换成中文大写后的字符串
    public   string  ConvertData( string  str)
   {
    
string  tmpstr = "" ;
    
string  rstr = "" ;
    
int  strlen = str.Length;
    
if  (strlen <= 4 ) // 数字长度小于四位
    {
    rstr
=  ConvertDigit(str);
    
    }
    
else
    {
    
    
if  (strlen <= 8 ) // 数字长度大于四位,小于八位
    {
     tmpstr
= str.Substring(strlen - 4 , 4 ); // 先截取最后四位数字
     rstr = ConvertDigit(tmpstr); // 转换最后四位数字
     tmpstr = str.Substring( 0 ,strlen - 4 ); // 截取其余数字
     
// 将两次转换的数字加上萬后相连接
     rstr =  String.Concat(ConvertDigit(tmpstr) + " " ,rstr);
     rstr
= rstr.Replace( " 零萬 " , " " );
     rstr
= rstr.Replace( " 零零 " , " " );
   
    } 
    
else
     
if (strlen <= 12 ) // 数字长度大于八位,小于十二位
    {
     tmpstr
= str.Substring(strlen - 4 , 4 ); // 先截取最后四位数字
     rstr = ConvertDigit(tmpstr); // 转换最后四位数字
     tmpstr = str.Substring(strlen - 8 , 4 ); // 再截取四位数字
     rstr =  String.Concat(ConvertDigit(tmpstr) + " " ,rstr);
     tmpstr
= str.Substring( 0 ,strlen - 8 );
     rstr
=  String.Concat(ConvertDigit(tmpstr) + " " ,rstr);
     rstr
= rstr.Replace( " 零億 " , " " );
     rstr
= rstr.Replace( " 零萬 " , " " );
     rstr
= rstr.Replace( " 零零 " , " " );
     rstr
= rstr.Replace( " 零零 " , " " );
    }
    }
    strlen
= rstr.Length;
    
if  (strlen >= 2 )
    {
    
switch (rstr.Substring(strlen - 2 , 2 ))
    {
     
case   " 佰零 " :rstr = rstr.Substring( 0 ,strlen - 2 ) + " " break ;
     
case   " 仟零 " :rstr = rstr.Substring( 0 ,strlen - 2 ) + " " break ;
     
case   " 萬零 " :rstr = rstr.Substring( 0 ,strlen - 2 ) + " " ; break ;
     
case   " 億零 " :rstr = rstr.Substring( 0 ,strlen - 2 ) + " " ; break ;
    
    }
    }
  
    
return  rstr;
   }
   
///  
   
///  转换数字(小数部分)
   
///  
   
///  需要转换的小数部分数字字符串
   
///  转换成中文大写后的字符串
    public   string  ConvertXiaoShu( string  str)
   {
    
int  strlen = str.Length ;
    
string  rstr;
    
if (strlen == 1 )
    {
    rstr
= ConvertChinese(str) + " " ;
    
return  rstr;
    }
    
else  
    {
    
string  tmpstr = str.Substring( 0 , 1 );
    rstr
= ConvertChinese(tmpstr) + " " ;
    tmpstr
= str.Substring( 1 , 1 );
    rstr
+= ConvertChinese(tmpstr) + " " ;
    rstr
= rstr.Replace( " 零分 " , "" );
    rstr
= rstr.Replace( " 零角 " , "" );
    
return  rstr;
    }
   
   
   }
  
   
///  
   
///  转换数字
   
///  
   
///  转换的字符串(四位以内)
   
///  
    public   string  ConvertDigit( string  str)
   {
    
int  strlen = str.Length;
    
string  rstr = "" ;
    
switch  (strlen)
    {
    
case   1 : rstr = ConvertChinese(str); break ;
    
case   2 : rstr = Convert2Digit(str); break ;
    
case   3 : rstr = Convert3Digit(str); break ;
    
case   4 : rstr = Convert4Digit(str); break ;
    }
    rstr
= rstr.Replace( " 拾零 " , " " );
    strlen
= rstr.Length;
  
    
return  rstr;
   }
  
  
   
///  
   
///  转换四位数字
   
///  
    public   string  Convert4Digit( string  str)
   {
    
string  str1 = str.Substring( 0 , 1 );
    
string  str2 = str.Substring( 1 , 1 );
    
string  str3 = str.Substring( 2 , 1 );
    
string  str4 = str.Substring( 3 , 1 );
    
string  rstring = "" ;
    rstring
+= ConvertChinese(str1) + " " ;
    rstring
+= ConvertChinese(str2) + " " ;
    rstring
+= ConvertChinese(str3) + " " ;
    rstring
+= ConvertChinese(str4);
    rstring
= rstring.Replace( " 零仟 " , " " );
    rstring
= rstring.Replace( " 零佰 " , " " );
    rstring
= rstring.Replace( " 零拾 " , " " );
    rstring
= rstring.Replace( " 零零 " , " " );
    rstring
= rstring.Replace( " 零零 " , " " );
    rstring
= rstring.Replace( " 零零 " , " " );
    
return  rstring;
   }
   
///  
   
///  转换三位数字
   
///  
    public   string  Convert3Digit( string  str)
   {
    
string  str1 = str.Substring( 0 , 1 );
    
string  str2 = str.Substring( 1 , 1 );
    
string  str3 = str.Substring( 2 , 1 );
    
string  rstring = "" ;
    rstring
+= ConvertChinese(str1) + " " ;
    rstring
+= ConvertChinese(str2) + " " ;
    rstring
+= ConvertChinese(str3);
    rstring
= rstring.Replace( " 零佰 " , " " );
    rstring
= rstring.Replace( " 零拾 " , " " );
    rstring
= rstring.Replace( " 零零 " , " " );
    rstring
= rstring.Replace( " 零零 " , " " );
    
return  rstring;
   }
   
///  
   
///  转换二位数字
   
///  
    public   string  Convert2Digit( string  str)
   {
    
string  str1 = str.Substring( 0 , 1 );
    
string  str2 = str.Substring( 1 , 1 );
    
string  rstring = "" ;
    rstring
+= ConvertChinese(str1) + " " ;
    rstring
+= ConvertChinese(str2);
    rstring
= rstring.Replace( " 零拾 " , " " );
    rstring
= rstring.Replace( " 零零 " , " " );
    
return  rstring;
   }
   
///  
   
///  将一位数字转换成中文大写数字
   
///  
    public   string  ConvertChinese( string  str)
   {
    
// "零壹贰叁肆伍陆柒捌玖拾佰仟萬億圆整角分"
     string  cstr = "" ;
    
switch (str)
    {
    
case   " 0 " : cstr = " " ; break ;
    
case   " 1 " : cstr = " " ; break ;
    
case   " 2 " : cstr = " " ; break ;
    
case   " 3 " : cstr = " " ; break ;
    
case   " 4 " : cstr = " " ; break ;
    
case   " 5 " : cstr = " " ; break ;
    
case   " 6 " : cstr = " " ; break ;
    
case   " 7 " : cstr = " " ; break ;
    
case   " 8 " : cstr = " " ; break ;
    
case   " 9 " : cstr = " " ; break ;
    }
    
return (cstr);
   } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值