金额转中国大写

/*
     * 将小写的人民币转化成大写
     */
    public static String convertToChineseNumber(double number) {
        StringBuffer chineseNumber = new StringBuffer();
        String[] num = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
        String[] unit = { "分", "角", "圆", "拾", "佰", "仟", "万", "拾", "佰", "仟",
                "亿", "拾", "佰", "仟", "万" };
        String tempNumber = String.valueOf(Math.round((number * 100)));
        int tempNumberLength = tempNumber.length();
        if ("0".equals(tempNumber)) {
            return "零圆整";
        }
        if (tempNumberLength > 15) {
            System.out.println("超出转化范围.");
        }
        boolean preReadZero = true; // 前面的字符是否读零
        for (int i = tempNumberLength; i > 0; i--) {
            if ((tempNumberLength - i + 2) % 4 == 0) {
                // 如果在(圆,万,亿,万)位上的四个数都为零,如果标志为未读零,则只读零,如果标志为已读零,则略过这四位
                if (i - 4 >= 0 && "0000".equals(tempNumber.substring(i - 4, i))) {
                    if (!preReadZero) {
                        chineseNumber.insert(0, "零");
                        preReadZero = true;
                    }
                    i -= 3; // 下面还有一个i--
                    continue;
                }
                // 如果当前位在(圆,万,亿,万)位上,则设置标志为已读零(即重置读零标志)
                preReadZero = true;
            }
            int digit = Integer.parseInt(tempNumber.substring(i - 1, i));
            if (digit == 0) {
                // 如果当前位是零并且标志为未读零,则读零,并设置标志为已读零
                if (!preReadZero) {
                    chineseNumber.insert(0, "零");
                    preReadZero = true;
                }
                // 如果当前位是零并且在(圆,万,亿,万)位上,则读出(圆,万,亿,万)
                if ((tempNumberLength - i + 2) % 4 == 0) {
                    chineseNumber.insert(0, unit[tempNumberLength - i]);
                }
            } else {
                // 如果当前位不为零,则读出此位,并且设置标志为未读零
                chineseNumber
                        .insert(0, num[digit] + unit[tempNumberLength - i]);
                preReadZero = false;
            }
        }
        // 如果分角两位上的值都为零,则添加一个“整”字
        if (tempNumberLength - 2 >= 0
                && "00".equals(tempNumber.substring(tempNumberLength - 2,
                        tempNumberLength))) {
            chineseNumber.append("整");
        }
        return chineseNumber.toString();
    }
原文地址:https://www.cnblogs.com/clovem/p/8005399.html