资源描述:
《java实现阿拉伯数字金额转汉语大写》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、/***将输入金额num转换为汉字大写格式*@paramnum输入金额(小于10000000)*@return金额的大写格式*/publicStringtranslate(doublenum){String[]upChinese={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖",};String[]upChinese2={"分","角","圆","拾","佰","仟","萬","拾","佰","仟","亿","拾","佰","仟","兆"};StringBufferresult=n
2、ewStringBuffer();intcount=0;intzeroflag=0;booleanmantissa=false;if(num<0){//输入值小于零return"输入金额不能为负数!";}if(num==0){//输入值等于零return"零";}if(String.valueOf(num).indexOf('E')!=-1){//输入值过大转为科学计数法本方法无法转换return"您输入的金额过大";}inttem=(int)(num*100);if(tem%100==0){//金额为整时if(
3、tem==0)return"穷鬼别来!";//输入额为e:0.0012小于分计量单位时result.insert(0,"整");tem=tem/100;count=2;mantissa=true;}while(tem>0){intt=(int)tem%10;//取得最后一位if(t!=0){//最后一位不为零时if(zeroflag>=1){//对该位前的单个或多个零位进行处理if(((!mantissa)&&count==1)){//不是整数金额且分为为零}elseif(count>2&&count-zerof
4、lag<2){//输入金额为400.04小数点前后都有零result.insert(1,"零");}elseif(count>6&&count-zeroflag<6&&count<10){//万位后为零且万位为零if(count-zeroflag==2){//输入值如400000result.insert(0,"萬");}else{result.insert(0,"萬零");//输入值如400101}}elseif(count>10&&count-zeroflag<10){if(count-zeroflag==2
5、){result.insert(0,"亿");}else{result.insert(0,"亿零");}}elseif(((count-zeroflag)==2)){//个位为零}elseif(count>6&&count-zeroflag==6&&count<10){//以万位开始出现零如4001000result.insert(0,"萬");}elseif(count==11&&zeroflag==1){result.insert(0,"亿");}else{result.insert(0,"零");}}res
6、ult.insert(0,upChinese[t]+upChinese2[count]);zeroflag=0;}else{if(count==2){result.insert(0,upChinese2[count]);//个位为零补上"圆"字}zeroflag++;}tem/=10;System.out.println("count="+count+"---zero="+zeroflag+"----"+result.toString());count++;if(count>20)break;}returnres
7、ult.toString();}}