Java金额大写转换
来源:互联网 发布:怎么删除淘宝上的好评 编辑:程序博客网 时间:2024/05/05 06:33
package Rong;
import java.text.DecimalFormat;
import java.text.NumberFormat;
//总体思路:
//对数字进行分级处理,级长为4
//对分级后的每级分别处理,处理后得到字符串相连
//如:123456=12|3456
//第二级:12=壹拾贰 + “万”
//第一级:3456 =叁千肆百伍拾陆 + “”
public final class change{
privatestatic final String NUM = "零壹贰叁肆伍陆柒捌玖";
privatestatic final String UNIT = "仟佰拾个";
privatestatic final String GRADEUNIT = "仟万亿兆";
privatestatic final String DOTUNIT = "角分厘";
privatestatic final int GRADE = 4;
privatestatic final NumberFormat nf = new DecimalFormat("#0.###");
publicstatic String toBigAmt(double amount) {
nf.setMinimumFractionDigits(3);//小数点后不足的补零
String amt =nf.format(amount);//将double类型的数格式化并转换成字符串,实际上进行了四舍五入
System.out.println(amt);
String dotPart = ""; //取小数位
String intPart = ""; //取整数位
int dotPos;
if ((dotPos = amt.indexOf('.')) != -1) {
intPart = amt.substring(0, dotPos);
dotPart = amt.substring(dotPos + 1);
} else {
intPart = amt;
}
if (intPart.length() > 16)
throw new java.lang.InternalError("The amount is too big.");
String intBig = intToBig(intPart);
String dotBig = dotToBig(dotPart);
//以下代码稍做修改,现在是完美的代码啦!
if ((dotBig.length() == 0) &&(intBig.length() != 0)) {
return intBig + "元整";
} else if ((dotBig.length() == 0)&& (intBig.length() == 0)) {
return intBig + "零元";
} else if ((dotBig.length() != 0)&& (intBig.length() != 0)) {
return intBig + "元" + dotBig;
} else {
return dotBig;
}
}
//用来处理几角几分几厘
privatestatic String dotToBig(String dotPart) {
import java.text.DecimalFormat;
import java.text.NumberFormat;
//总体思路:
//对数字进行分级处理,级长为4
//对分级后的每级分别处理,处理后得到字符串相连
//如:123456=12|3456
//第二级:12=壹拾贰 + “万”
//第一级:3456 =叁千肆百伍拾陆 + “”
public final class change{