public class AmountInWordsUtils {
private static final String[] BIG_UNIT = {"", "万", "亿"};
private static final String[] SMALL_UNIT = {"", "拾", "佰", "仟"};
private static final String[] UP_NUM = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
public static void main(String[] args) {
BigDecimal inputMoney = new BigDecimal("1000009.32");
String result = toChinese(inputMoney);
System.out.println(result);
}
public static String toChinese(BigDecimal inputMoney) {
StringBuilder result = new StringBuilder();
// 处理整数部分
long integerPart = inputMoney.setScale(0, RoundingMode.DOWN).longValue();
if (integerPart == 0) {
result.append("零元");
} else {
result.append(convert(integerPart)).append("元");
}
// 处理小数部分
long decimalPart = inputMoney.movePointRight(2).setScale(0, RoundingMode.DOWN).longValue() % 100;
if (decimalPart == 0) {
result.append("整");
} else {
String s = String.valueOf(decimalPart);
result.append(UP_NUM[s.charAt(0) - '0']).append("角");
result.append(UP_NUM[s.charAt(1) - '0']).append("分");
}
return result.toString();
}
private static String convert(long num) {
StringBuilder result = new StringBuilder();
// 按照万、亿的单位进行转换
int bigIdx = 0;
while (num > 0) {
long temp = num % 10000;
if (temp > 0) {
result.insert(0, BIG_UNIT[bigIdx]);
}
result.insert(0, convert4(temp));
num /= 10000;
bigIdx++;
}
// 去掉前导的零
while (result.length() > 1 && result.charAt(0) == UP_NUM[0].charAt(0)) {
result.deleteCharAt(0);
}
return result.toString();
}
private static String convert4(long num) {
StringBuilder result = new StringBuilder();
// 按照拾、佰、仟的单位进行转换
int smallIdx = 0;
while (num > 0) {
long digit = num % 10;
if (digit > 0) {
result.insert(0, SMALL_UNIT[smallIdx]);
result.insert(0, UP_NUM[(int) digit]);
}
num /= 10;
smallIdx++;
}
// 去掉前导的零
while (result.length() > 1 && result.charAt(0) == UP_NUM[0].charAt(0)) {
result.deleteCharAt(0);
}
return result.toString();
}
}
06-27
01-14
529
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
02-06
4886
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
05-19
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交