阿拉伯数字转中文数字

// 数字  
public static String[] mChineseNumber = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};

// 数字单位,当下只支持到:亿
public static String[] mChineseNumberUnit = {"十", "佰", "千", "万", "十万", "百万", "千万", "亿"};



/**
 * 阿拉伯数字转中文数字
 *
 * @param number 阿拉伯数字
 * @return 中文数字
 */
public static String toChineseNumber(int number) {
    // 转行后的数字容器,从个位开始向上添加
    StringBuffer result = new StringBuffer();
    // 进制值,当下默认为十进制
    int operator = 10;
    // 数字单位角标。因为个位没有单位,所以-1起始
    int index = -1;

    do {
        // 获取当前位数上的值
        int x = number % operator;

        // 当前数字为0,且后一位也为0 时,为避免重复删除一个零文字
        if (x == 0 && result.indexOf(mChineseNumber[0]) == 0){
            result.delete(0, 1);
        }

        // 插入数字单位,只有当数字单位角标在范围内,且当前数字不为0 时才有效
        if (index >= 0 && index < mChineseNumberUnit.length && x != 0) {
            result.insert(0, mChineseNumberUnit[index]);
        }

        // 插入数字文字
        result.insert(0, mChineseNumber[x]);

        // 减去已转行的数字大小
        number -= x;
        // 转换的位数进一位
        number /= operator;
        // 数字单位角标自增
        index++;
    } while (number > 0);

    // 当文字内容不为“零”,为“XXX零”时,删除最后的零字
    if (result.length() > 1 && result.lastIndexOf(mChineseNumber[0]) == result.length() - 1) {
        result.deleteCharAt(result.length() - 1);
    }

    return result.toString();
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值