java 金额转中文大写

public class NumberChinese {
    public static String numberChinese(String str) {
        BigDecimal num = new BigDecimal(str);
        String strOutput;
        String strUnit = "仟佰拾亿仟佰拾万仟佰拾元角分";
        String strNum = "零壹贰叁肆伍陆柒捌玖";
        num = num.setScale(2, RoundingMode.HALF_UP);
        String numStr = num.toPlainString().replace(".", "");
        strUnit = strUnit.substring(strUnit.length() - numStr.length());
        StringBuilder strOutputBuilder = new StringBuilder();
        for (int i = 0; i < numStr.length(); i++) {
            int index = Integer.parseInt(numStr.substring(i, i + 1));
            strOutputBuilder.append(strNum.charAt(index))
                    .append(strUnit.charAt(i));
        }
        strOutput = strOutputBuilder.toString();
        strOutput = strOutput.replaceAll("零角零分$", "整");
        strOutput = strOutput.replaceAll("零[仟佰拾]", "零");
        strOutput = strOutput.replaceAll("零{2,}", "零");
        strOutput = strOutput.replaceAll("零([亿|万])", "$1");
        strOutput = strOutput.replaceAll("零+元", "元");
        strOutput = strOutput.replaceAll("亿零{0,3}万", "亿");
        strOutput = strOutput.replaceAll("^元", "零元");
        strOutput = strOutput.replaceAll("零分", "");
        return strOutput;
    }

    public static void main(String[] args) {
        // Example usage:
        String result = numberChinese("101.22");
        System.out.println(result);
    }

你可能感兴趣的:(java,python,开发语言)