梦醒三分,执着疯子
高兴的就是快乐的,喜欢就不要放弃。
posts - 59,comments - 118,trackbacks - 1

         第一种方法是一种笨方法,感觉代码太多,也很不方便,所以又重新写了这一个,应该是比较全面了。
经Tony.Gong提醒,修改后的代码如下:
public string GetUpperNum(string numStr)
  {
   if(numStr==null || numStr=="") return "没有数值!";

   string[] n=new string[10]{"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
   string[] u=new string[11]{"角","分","元","拾","佰","仟","万","拾","佰","仟","亿"};
   string result="";
   numStr=decimal.Round(decimal.Parse(numStr),2).ToString();
   string[] num=numStr.Split(new char[]{'.'});

   if(num[0].Length>9) return "超出范围";
   //整数部分
   for(int i=0;i<num[0].Length;i++)
   {
    switch(num[0].Substring(i,1))
    {
     case "0":
      if(!(num[0].Substring(i-1,1)=="0")) result=result+n[0];
      break;
     case "1":
      result=result+n[1]+u[num[0].Length-i+1];
      break;
     case "2":
      result=result+n[2]+u[num[0].Length-i+1];
      break;
     case "3":
      result=result+n[3]+u[num[0].Length-i+1];
      break;
     case "4":
      result=result+n[4]+u[num[0].Length-i+1];
      break;
     case "5":
      result=result+n[5]+u[num[0].Length-i+1];
      break;
     case "6":
      result=result+n[6]+u[num[0].Length-i+1];
      break;
     case "7":
      result=result+n[7]+u[num[0].Length-i+1];
      break;
     case "8":
      result=result+n[8]+u[num[0].Length-i+1];
      break;
     case "9":
      result=result+n[9]+u[num[0].Length-i+1];
      break;
    }
   }
   //处理万位以上零数
   switch(num[0].Length)
   {
    case 6:
     if(num[0].Substring(1,1)=="0") result=result.Substring(0,2)+u[6]+result.Substring(2,result.Length-2);
     break;
    case 7:
     if(num[0].Substring(1,2)=="00")
     {
      result=result.Substring(0,2)+u[6]+result.Substring(2,result.Length-2);
      break;
     }
     if(num[0].Substring(2,1)=="0") result=result.Substring(0,4)+u[6]+result.Substring(4,result.Length-4);
        break;          
    case 8:
     if(num[0].Substring(1,3)=="000")
     {
      result=result.Substring(0,2)+u[6]+result.Substring(2,result.Length-2);
      break;
     }
     if(num[0].Substring(1,1)=="0" && (!(num[0].Substring(2,1)=="0")) && num[0].Substring(3,1)=="0")
     {
      result=result.Substring(0,5)+u[6]+result.Substring(5,result.Length-5);
      break;
     }
     if(num[0].Substring(2,2)=="00")
     {
      result=result.Substring(0,4)+u[6]+result.Substring(4,result.Length-4);
      break;
     }
     if(num[0].Substring(3,1)=="0") result=result.Substring(0,6)+u[6]+result.Substring(6,result.Length-6);
     break;          
    case 9:
    {
     if(num[0].Substring(1,4)=="0000") break;
     if(num[0].Substring(1,1)=="0" && (!(num[0].Substring(2,1)=="0")) && num[0].Substring(3,1)=="0" && num[0].Substring(4,1)=="0")
     {
      result=result.Substring(0,5)+u[6]+result.Substring(5,result.Length-5);
      break;
     }
     if(num[0].Substring(1,1)=="0" && (!(num[0].Substring(3,1)=="")) && num[0].Substring(2,1)=="0" && num[0].Substring(4,1)=="0")
     {
      result=result.Substring(0,5)+u[6]+result.Substring(5,result.Length-5);
      break;
     }
     if(num[0].Substring(1,1)=="0" && (!(num[0].Substring(2,1)=="0"))  && (!(num[0].Substring(3,1)=="0")) && num[0].Substring(4,1)=="0")
     {
      result=result.Substring(0,7)+u[6]+result.Substring(7,result.Length-7);
      break;
     }
     if((!(num[0].Substring(1,1)=="0")) && num[0].Substring(2,1)=="0"  && (!(num[0].Substring(3,1)=="0")) && num[0].Substring(4,1)=="0")
     {
      result=result.Substring(0,7)+u[6]+result.Substring(7,result.Length-7);
      break;
     }
     if(num[0].Substring(2,3)=="000")
     {
      result=result.Substring(0,4)+u[6]+result.Substring(4,result.Length-4);
      break;
     }
     if(num[0].Substring(3,2)=="00")
     {
      result=result.Substring(0,6)+u[6]+result.Substring(6,result.Length-6);
      break;
     }
     if(num[0].Substring(4,1)=="0") result=result.Substring(0,8)+u[6]+result.Substring(8,result.Length-8);
     break;
    }
   }
   //处理整数的尾数零
   if(result.Substring(result.Length-1,1)=="零") result=result.Substring(0,result.Length-1)+"元";
   //小数部分
   if(num.Length<2) result=result+"整";
   else
   {
    if(num[1]=="00") return result+"整";
    if(num[1].Length==1 && num[1].Substring(0,1)=="0") return result+"整";
    for(int i=0;i<num[1].Length;i++)
    {
     switch(num[1].Substring(i,1))
     {
      case "0":
       if(i==0) result=result+n[0];
       break;
      case "1":
       result=result+n[1]+u[i];
       break;
      case "2":
       result=result+n[2]+u[i];
       break;
      case "3":
       result=result+n[3]+u[i];
       break;
      case "4":
       result=result+n[4]+u[i];
       break;
      case "5":
       result=result+n[5]+u[i];
       break;
      case "6":
       result=result+n[6]+u[i];
       break;
      case "7":
       result=result+n[7]+u[i];
       break;
      case "8":
       result=result+n[8]+u[i];
       break;
      case "9":
       result=result+n[9]+u[i];
       break;
     }
    }
   }
   return result ;
  }

 

posted @ 2006-09-12 16:46 Jacker.W 阅读(203) | 评论 (3)编辑
     摘要: 最近做项目时,要求将数值转换成大写。用了非常笨的方法写了出来,而且只能处理8位整数和两位小数的情况。很丢人啊,本来不想贴出来的,但为了给自己一个警醒,编码时能够多想想。public string GetUpperNum(string numStr){string intStr=numStr.Substring(0,numStr.Length-3);string demStr=numStr.Subs... 阅读全文
posted @ 2006-09-12 16:41 Jacker.W 阅读(39) | 评论 (0)编辑

    今天终于申请到了一个博客,定位于.Net学习与交流。
       学习使用电脑已经有六七年光景了,上网更是家常便饭。上大学时泡网泡论坛玩游戏是玩疯了,泡论坛都是潜水状态,从不露头。工作后呆了两个城市,一个是北京,一个是广州。现在爱上了网上新闻,每天都要去一些门户或新闻网站去溜达一遍。看了这么几年的新闻,感觉各大网站上的新闻都大同小异。博客在我们国家出现的时候,我就已经知道了。但是一直都没想过要建立属于自己的博客,一切都因为我太懒了。
        学习使用.Net技术已经两年了,现在已经熟悉了使用.Net工具及编程方式,可以独立完成一些数据库方面的项目。比如:c#.Net/VB.Net和SQL Server/Access相结合的信息系统。尽管这样,但仍然觉得自己进步太慢。因此希望通过建立博客与各位.Net爱好者交流与学习,共同进步。

posted @ 2006-09-12 16:38 Jacker.W 阅读(20) | 评论 (3)编辑