阿拉伯数字转中文数字

// 数字  
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();
}

 

你可能感兴趣的:(Android,JAVA)