class RMB { private static final String[] NUMBERS = {'零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'}; private static final String[] UNITS = {'元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟', '万', '拾', '佰', '仟'};

public static String toString(double x) {
    long yuan = (long) x;
    int jiao = (int) ((x - yuan) * 10);
    int fen = (int) ((x - yuan) * 100) % 10;

    StringBuilder sb = new StringBuilder();

    if (yuan == 0) {
        sb.append(NUMBERS[0]);
    } else {
        int count = 0;
        while (yuan > 0) {
            int digit = (int) (yuan % 10);
            String unit = UNITS[count];

            if (digit != 0) {
                sb.insert(0, unit);
            }

            sb.insert(0, NUMBERS[digit]);

            if (digit == 0 && sb.charAt(0) != '零') {
                sb.insert(0, '零');
            }

            count++;
            yuan /= 10;
        }
    }

    if (jiao == 0 && fen == 0) {
        sb.append('元整');
    } else {
        if (jiao != 0) {
            sb.append(NUMBERS[jiao]).append('角');
        }
        if (fen != 0) {
            sb.append(NUMBERS[fen]).append('分');
        }
    }

    return sb.toString();
}

}

Java 实现人民币金额大写转换:RMB 类静态方法 toString

原文地址: https://www.cveoy.top/t/topic/cqN8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录