tempad
ReadyGo!技术成就梦想 >>基础教程 >> C#数字金额转换大写金额

C#数字金额转换大写金额

ReadyGo!技术成就梦想 网络搜索 efish 2008-8-2 23:35:16
       代码的主调函数为ConvertSum,它的参数是string类型的数字字符串。在ASP.NET中调用方式如下:

        Label1.Text=ConvertSum("数字字符串");

        其代码如下:            /// 转换数字金额主函数(包括小数)
          ///
          /// 数字字符串
          /// 转换成中文大写后的字符串或者出错信息提示字符串
          public string ConvertSum(string str)
          {
               if(!IsPositveDecimal(str))
               return "输入的不是正数字!";
               if(Double.Parse(str)>999999999999.99)
               return "数字太大,无法换算,请输入一万亿元以下的金额";
               char;
               ch="."; //小数点
               string);//按小数点分割字符串
               if(splitstr.Length==1) //只有整数部分
               return ConvertData(str)+"圆整";
               else //有小数部分
               {
                    string rstr;
                    rstr=ConvertData(splitstr)+"圆";//转换整数部分
                    rstr+=ConvertXiaoShu(splitstr);//转换小数部分
                    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("零零","零");
                    }
                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;
          }

责任编辑: efish 参与评论 查找更多:
相关文章
c# 启动本机程序 c# 启动本机程序
c# 实现远程关机 c# 实现远程关机
C#创建不规则窗体代码 C#创建不规则窗体代码
如何为程式码加上行号 如何为程式码加上行号
ViewState使用兼谈序列化 ViewState使用兼谈序列化
微软CFO:10亿美元收购雅虎搜索 微软CFO:10亿美元收购雅虎搜索
百度首页添加hao123链接 百度首页添加hao123链接
希捷一年出货硬盘1.83亿块 每秒钟近6块 希捷一年出货硬盘1.83亿块 每秒钟近6块
IT界对云计算的20个定义 IT界对云计算的20个定义
用vim处理字符的大小写转换 用vim处理字符的大小写转换
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn

分类导航
ReadyGo!技术成就梦想