数字转换成中文 java实现
数字转换成中文 java实现
leopardlz 发表于3个月前
数字转换成中文 java实现
  • 发表于 3个月前
  • 阅读 2
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

/**
 * <p>
 * 主要思想,根据数字按四位划分为一级,第一级段位为个、十、百、千,第二级段位为万、亿、万亿。然后根据当前数所属位置来追加所属段数
 * </p>
 *
 * @author ZLi 2017-9-12
 *
 */
public class NumToChinese {
    /**
     * 第一级别段数
     */
    final static String[] units1 = { "", "拾", "佰", "仟", };
    /**
     * 第二级别段数
     */
    final static String[] units2 = { "", "万", "亿", "万亿" };
    final static String[] numEnum = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒",
            "捌", "玖" };

    public static void main(String[] args) {
        int num = 2134000123;
        System.out.println(numToChinese(num));
    }

    public static String numToChinese(int num) {
        char[] numChar = String.valueOf(num).toCharArray();
        StringBuffer sb = new StringBuffer("");
        int length = numChar.length;
        for (int i = 0; i < length; i++) {
            int mod = (length - 1 - i) % 4;
            int n = Integer.parseInt(numChar[i] + "");
            if (n == 0) {
                if (i + 1 < length && numChar[i + 1] != '0' && mod != 0) {
                    sb.append(numEnum[0]);
                }
            } else {
                sb.append(numEnum[n]).append(units1[mod]);
            }
            /**
             * 补上第二级别段数
             */
            if (mod == 0) {
                sb.append(units2[(length - i) / 4]);
            }
        }
        return sb.toString();
    }
}

 

共有 人打赏支持
粉丝 0
博文 33
码字总数 4393
×
leopardlz
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: