在写这个之前,老师出的,把阿拉伯数字转化为人民币大写
因为想的跟老师不一样,被老师BS了下,回到住处就把这个写出来
如果有问题,请提出
package com.joyleft.client;
public class MoneyUtil {
private static final String[] NUMBERS={ "","壹", "贰", "叁", "肆", "伍", "陆",
"柒", "捌", "玖" };
private static final String[] IUNIT = { "元", "拾", "佰", "仟", "万", "拾", "佰",
"仟", "亿", "拾", "佰", "仟", "万", "拾", "佰", "仟" };
private static final String[] DUNIT = { "角", "分" };
private static final String TOTAL="整";
/**
* 转成数组
* @param number
*/
public int[] toArray(String number){
char[]cn=number.toCharArray();
int []num=new int[cn.length];
for(int i=0;i<cn.length;i++)
{
num[i]=Integer.parseInt(String.valueOf(cn[i]));
}
return num;
}
public void toChinese(String number){
String strInt="";
String strFloat="";
String StrNum="";
if(number.indexOf(",")>0)
number=number.replace(",", "");
if(number.indexOf(".")>0){//是否有小数点
strInt=number.substring(0,number.indexOf("."));
strFloat=number.substring(number.indexOf(".")+1);
strFloat=round(strFloat);
if("100".equals(strFloat)){//四舍五入后小数位没有了
StrNum=this.handleInteger(strInt,true);
strFloat="";
}else{
StrNum=this.handleInteger(strInt,false)+handleDecimal(strFloat);
}
}else{
System.out.println(number);
}
System.out.println(StrNum);
}
/**
* 整数部分处理
* @param number
*/
public String handleInteger(String number,boolean b){
String strNum="人民币:";
int[] num=null;
if("0".equals(number)){
return strNum+"";
}
num=toArray(number);
for(int i=0;i<num.length;i++){
if(b&&i==num.length-1){
num[i]=num[i]+1;
}
if(num[i]!=0){
strNum=strNum+NUMBERS[num[i]]+IUNIT[num.length-i-1];
}else{
if(num.length-i==13)//万亿位为零 加万字
strNum=strNum+NUMBERS[num[i]]+IUNIT[num.length-i-1];
else if(num.length-i==9)//亿位为零 加亿字
strNum=strNum+NUMBERS[num[i]]+IUNIT[num.length-i-1];
else if(num.length-i==5)//万位为零 加万字
strNum=strNum+NUMBERS[num[i]]+IUNIT[num.length-i-1];
else if(num.length-i==1)
strNum=strNum+NUMBERS[num[i]]+IUNIT[num.length-i-1]+TOTAL;
}
}
return strNum;
}
/**
* 小数部分处理
* @param number
*/
public String handleDecimal(String number){
String strNum="";
int[] num=toArray(number);
for(int i=0;i<num.length;i++){
if(num[i]!=0)
strNum=strNum+NUMBERS[num[i]]+DUNIT[i];
else
strNum=strNum+NUMBERS[num[i]]+TOTAL;
}
return strNum;
}
/**
* 四舍五入 保留两位
* @param num
*/
public String round(String number){
String strNum="0."+number;
float num=Float.parseFloat(strNum);
int reNum=(int)num*1000%10;//取得千分位
int intNum=0;
if(reNum>=5){
num=(num*100+1);
intNum=(int)num;
}else{
intNum=(int)(num*100);
}
strNum=String.valueOf(intNum);
if(strNum.length()==1)
strNum="0"+strNum;
return strNum;
}
/**
* @param args
*/
public static void main(String[] args) {
new MoneyUtil().toChinese("3453845546430.200");
new MoneyUtil().toChinese("0.99");
}
}
结果
人民币:叁万肆仟伍佰叁拾捌亿肆仟伍佰伍拾肆万陆仟肆佰叁拾元整贰角整
人民币:玖角玖分
最新评论
朋友 交换链接吗
我也要评论,东华理工
很强
你是老师啊?
写的这都是什么语言啊,看不懂呢
包子还是一个有为青年。
关于旅行,总有许多幸福和迷恋。初秋浪漫而至,期待自己的下一站快乐。
楼主你好,我最近也在研究安卓无线点餐,不知您的源码能否分享一下,提供一些思路,谢谢:)
嗯嗯,原来我以前的姿势都不对的啊
对不起,我也没搞清楚,是想下载别人的模板,都是在网上看到的,人家的“空间或者服务器主机,的文件地址咱们也不知道呀,怎么填写读入目录呀。 这样的话,根本是下不了别人网站上的模板吧。 请教详细的下载方法。最好是人家在线的网站