前言:
输入数字金额参数,运行程序得到其对应的大写中文金额;例如:输入 12.56,输出 12.56 : 壹拾贰元伍角陆分;重点来了:本人亲测有效。
奉上代码:
/**
* @Title: ConvertUpMoney
* @Description: 将数字金额转换为大写中文金额
* @date: 2019年6月18日 下午10:52:27
*/
public class ConvertUpMoney {
// 大写数字
private static final String[] NUMBERS = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
// 整数部分的单位
private static final String[] IUNIT = {"元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万","拾","佰","仟"};
// 小数部分的单位
private static final String[] DUNIT = {"角","分","厘"};
/**
* 转换为大写的中文金额
* @param str 字符串类型的 金额数字
* @return
*/
public static String toChinese(String str) {
// 判断输入的金额字符串是否符合要求
if (StringUtils.isBlank(str) || !str.matches("(-)?[\\d]*(.)?[\\d]*")) {
return "抱歉,请输入数字!";
}
if("0".equals(str) || "0.00".equals(str) || "0.0".equals(str)) {
return "零元";
}
// 判断金额数字中是否存在负号"-"
boolean flag = false;
if(str.startsWith("-")){
// 标志位,标志此金额数字为负数
flag = true;
str = str.replaceAll("-", "");