阿拉伯数字转换为汉字数字

public class NumberFormatUtil {
  
    static String[] units = {"","","","","","十万","百万","千万","亿","十亿","百亿","千亿","万亿" };  
    static char[] numArray = {'','','','','','','','','',''};  

    /**
     * 将整数转换成汉字数字
     * @param num 需要转换的数字
     * @return 转换后的汉字
     */
    public static String formatInteger(int num) {  
        char[] val = String.valueOf(num).toCharArray();  
        int len = val.length;  
        StringBuilder sb = new StringBuilder();  
        for (int i = 0; i < len; i++) {  
            String m = val[i] + "";  
            int n = Integer.valueOf(m);  
            boolean isZero = n == 0;  
            String unit = units[(len - 1) - i];  
            if (isZero) {  
                if ('0' == val[i - 1]) {  
                    continue;  
                } else {  
                    sb.append(numArray[n]);  
                }  
            } else {  
                sb.append(numArray[n]);  
                sb.append(unit);  
            }  
        }  
        return sb.toString();  
    }  
    /**
     * 将小数转换成汉字数字
     * @param decimal 需要转换的数字
     * @return 转换后的汉字
     */
    public static String formatDecimal(double decimal) {  
        String decimals = String.valueOf(decimal);  
        int decIndex = decimals.indexOf(".");  
        int integ = Integer.valueOf(decimals.substring(0, decIndex));  
        int dec = Integer.valueOf(decimals.substring(decIndex + 1));  
        String result = formatInteger(integ) + "." + formatFractionalPart(dec);  
        return result;  
    }

    /**
     * 格式化小数部分的数字
     * @param decimal 需要转换的数字
     * @return 转换后的汉字
     */
    public static String formatFractionalPart(int decimal) {
        char[] val = String.valueOf(decimal).toCharArray();  
        int len = val.length;  
        StringBuilder sb = new StringBuilder();  
        for (int i = 0; i < len; i++) {  
            int n = Integer.valueOf(val[i] + "");  
            sb.append(numArray[n]);  
        }  
        return sb.toString();  
    }  
} 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值