第一种方法是一种笨方法,感觉代码太多,也很不方便,所以又重新写了这一个,应该是比较全面了。
经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) |
编辑