//我自己写的
//把String 换成了StringBuilder 因为后者只要新建后,无论如何变化,都是同一个字符串,
//而String 是不可变的, 每改变一次,就要新建一个变量
//也可以用StringBuffer , 和StringBuilder用法一样, 不过是线程安全的
public class SmallToBig {
/**
* @param args
* 把数字换成大写的中文货币字符 123456789 换成
* 零,壹,贰,叁,肆,伍,陆,柒,捌,玖
* "元","十","佰","仟","万","十","佰","仟","亿","十","佰","仟"," ","","","" 太大的就没写了, 直接输出大写数字
*/
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("3789341.512");
System.out.print( getFloatBigCn(sb));
}
public static StringBuilder getFloatBigCn(StringBuilder sb){
String [] big={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
String [] fUnit ={"角","分","","",""};
StringBuilder floatStr=new StringBuilder();
if(sb.indexOf(".")>-1){ //是否存在小数点
StringBuilder intPart = new StringBuilder(sb.substring(0, sb.indexOf(".")));//取得整数部分
StringBuilder flPart = new StringBuilder(sb.substring(sb.indexOf(".")+1, sb.length()));//取得小数部分
//整数部分处理
floatStr.append(getIntBigCn(intPart));//整数部分给整数方法处理
//小数点后处理
if(flPart.length()>2)
flPart = flPart.delete(2, flPart.length()); //小数点后只取到分 ,注意,此部会把2位后的数值删除掉
for (int i = 0; i <= flPart.length()-1; i++) {
int t = Integer.parseInt(flPart.substring(i, i+1));
floatStr.append(big[t]+fUnit[i]); // 数值加单位
}
}else //如果没有小数点, 直接给处理整数的方法处理
floatStr.append(getIntBigCn(sb));
return floatStr;
}
public static StringBuilder getIntBigCn(StringBuilder sb){
String[] big={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
String [] iUnit ={"元","十","佰","仟","万","十","佰","仟","亿",
"十","佰","仟"," ","","","","","","","",""};//中国人太有钱。。。超出单位所能承受
StringBuilder intStr=new StringBuilder();
int cnt=0;//换单位
for(int i=sb.length();i>0 ; i--){ //倒取的值
int m = Integer.parseInt(sb.substring(i-1,i));
intStr.insert(0,big[m]+iUnit[cnt]);//从前面插入
cnt++;
}
return intStr;
}
}
给个链接:http://zhidao.baidu.com/link?url=_GwVlBYYJbgABQwE3aZZSDS5Wz6qhe86qOkJFs-W022mGOMD5htRDS4A9pPXg8UHyGzEiVVXv7zZ7ofo-psZ__
百度吧,好多呢。。。