Java金额大小写的转换方法
本文实例为大家分享了Java金额大小写转换的具体代码,供大家参考,具体内容如下
/**
*@ClassName:NumberConvert
*@Description:TODO
*@date2013-3-07下午16:08:10
*@versionV1.0
*/
publicclassMoneyUtil{
/**大写数字*/
privatestaticfinalString[]NUMBERS={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
/**整数部分的单位*/
privatestaticfinalString[]IUNIT={"元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万","拾","佰",
"仟"};
/**小数部分的单位*/
privatestaticfinalString[]DUNIT={"角","分","厘"};
/**
*得到大写金额。
*/
publicstaticStringtoChinese(Stringstr){
str=str.replaceAll(",","");//去掉","
StringintegerStr;//整数部分数字
StringdecimalStr;//小数部分数字
//初始化:分离整数部分和小数部分
if(str.indexOf(".")>0){
integerStr=str.substring(0,str.indexOf("."));
decimalStr=str.substring(str.indexOf(".")+1);
}elseif(str.indexOf(".")==0){
integerStr="";
decimalStr=str.substring(1);
}else{
integerStr=str;
decimalStr="";
}
//integerStr去掉首0,不必去掉decimalStr的尾0(超出部分舍去)
if(!integerStr.equals("")){
integerStr=Long.toString(Long.parseLong(integerStr));
if(integerStr.equals("0")){
integerStr="";
}
}
//overflow超出处理能力,直接返回
if(integerStr.length()>IUNIT.length){
System.out.println(str+":超出处理能力");
returnstr;
}
int[]integers=toArray(integerStr);//整数部分数字
booleanisMust5=isMust5(integerStr);//设置万单位
int[]decimals=toArray(decimalStr);//小数部分数字
returngetChineseInteger(integers,isMust5)+getChineseDecimal(decimals);
}
/**
*整数部分和小数部分转换为数组,从高位至低位
*/
privatestaticint[]toArray(Stringnumber){
int[]array=newint[number.length()];
for(inti=0;i1&&integers[i+1]!=0)
key+=NUMBERS[0];
}
chineseInteger.append(integers[i]==0?key:(NUMBERS[integers[i]]+IUNIT[length-i-1]));
}
returnchineseInteger.toString();
}
/**
*得到中文金额的小数部分。
*/
privatestaticStringgetChineseDecimal(int[]decimals){
StringBufferchineseDecimal=newStringBuffer("");
for(inti=0;i4){
StringsubInteger="";
if(length>8){
//取得从低位数,第5到第8位的字串
subInteger=integerStr.substring(length-8,length-4);
}else{
subInteger=integerStr.substring(0,length-4);
}
returnInteger.parseInt(subInteger)>0;
}else{
returnfalse;
}
}
publicstaticvoidmain(String[]args){
Stringnumber="1.23";
System.out.println(number+""+MoneyUtil.toChinese(number));
number="1234567890123456.123";
System.out.println(number+""+MoneyUtil.toChinese(number));
number="0.0798";
System.out.println(number+""+MoneyUtil.toChinese(number));
number="10,001,000.09";
System.out.println(number+""+MoneyUtil.toChinese(number));
number="01.107700";
System.out.println(number+""+MoneyUtil.toChinese(number));
}
}
运行结果为:
1.23壹元贰角叁分
1234567890123456.123壹仟贰佰叁拾肆万伍仟陆佰柒拾捌亿玖仟零壹拾贰万叁仟肆佰伍拾陆元壹角贰分叁厘
0.0798柒分玖厘
10,001,000.09壹仟万零壹仟元玖分
01.107700壹元壹角柒厘
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。