Java将数字金额转为大写中文金额
本文实例为大家分享了Java如何将数字金额转为大写中文金额的具体代码,供大家参考,具体内容如下
前言:
输入数字金额参数,运行程序得到其对应的大写中文金额;例如:输入— 12.56,输出— 12.56:壹拾贰元伍角陆分;重点来了:本人亲测有效。
奉上代码:
/**
*@Title:ConvertUpMoney
*@Description:将数字金额转为大写汉字金额
*@date:2019年6月18日下午10:52:27
*/
publicclassConvertUpMoney{
//大写数字
privatestaticfinalString[]NUMBERS={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
//整数部分的单位
privatestaticfinalString[]IUNIT={"元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万","拾","佰","仟"};
//小数部分的单位
privatestaticfinalString[]DUNIT={"角","分","厘"};
//转成中文的大写金额
publicstaticStringtoChinese(Stringstr){
//判断输入的金额字符串是否符合要求
if(StringUtils.isBlank(str)||!str.matches("(-)?[\\d]*(.)?[\\d]*")){
System.out.println("抱歉,请输入数字!");
returnstr;
}
if("0".equals(str)||"0.00".equals(str)||"0.0".equals(str)){
return"零元";
}
//判断是否存在负号"-"
booleanflag=false;
if(str.startsWith("-")){
flag=true;
str=str.replaceAll("-","");
}
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="";
}
//beyond超出计算能力,直接返回
if(integerStr.length()>IUNIT.length){
System.out.println(str+":超出计算能力");
returnstr;
}
int[]integers=toIntArray(integerStr);//整数部分数字
//判断整数部分是否存在输入012的情况
if(integers.length>1&&integers[0]==0){
System.out.println("抱歉,请输入数字!");
if(flag){
str="-"+str;
}
returnstr;
}
booleanisWan=isWan5(integerStr);//设置万单位
int[]decimals=toIntArray(decimalStr);//小数部分数字
Stringresult=getChineseInteger(integers,isWan)+getChineseDecimal(decimals);//返回最终的大写金额
if(flag){
return"负"+result;//如果是负数,加上"负"
}else{
returnresult;
}
}
//将字符串转为int数组
privatestaticint[]toIntArray(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){
subInteger=integerStr.substring(length-8,length-4);
}else{
subInteger=integerStr.substring(0,length-4);
}
returnInteger.parseInt(subInteger)>0;
}else{
returnfalse;
}
}
//Test
publicstaticvoidmain(String[]args){
Stringnumber="12.56";
System.out.println(number+":"+ConvertUpMoney.toChinese(number));
number="1234567890563886.123";
System.out.println(number+":"+ConvertUpMoney.toChinese(number));
number="1600";
System.out.println(number+":"+ConvertUpMoney.toChinese(number));
number="156,0";
System.out.println(number+":"+ConvertUpMoney.toChinese(number));
number="-156,0";
System.out.println(number+":"+ConvertUpMoney.toChinese(number));
number="0.12";
System.out.println(number+":"+ConvertUpMoney.toChinese(number));
number="0.0";
System.out.println(number+":"+ConvertUpMoney.toChinese(number));
number="01.12";
System.out.println(number+":"+ConvertUpMoney.toChinese(number));
number="0125";
System.out.println(number+":"+ConvertUpMoney.toChinese(number));
number="-0125";
System.out.println(number+":"+ConvertUpMoney.toChinese(number));
number="sdw5655";
System.out.println(number+":"+ConvertUpMoney.toChinese(number));
System.out.println(null+":"+ConvertUpMoney.toChinese(null));
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。