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