public class ArabicToChineseUtils{
public static String[] units = {"", "十", "百", "千", "万", "十万", "百万", "千万", "亿", "十亿", "百亿", "千亿", "万亿"};
public static char[] numArray = {'零', '一', '二', '三', '四', '五', '六', '七', '八', '九'};
/**
* 转换整数或者双精度小数的整数部分
*/
public static String formatInteger(int num){
//将数字转为字符数组,如1234 > 1,2,3,4
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);
//如果数字为0,打上标记
boolean isZero = n==0;
//根据数字所在位置获得当前数字的单位
String unit = units[(len - 1) - i];
//如果当前数字是0
if(isZero) {
if('0' == val[i - 1]){
//如果前一个数是0,则跳过本次循环,忽略0,因为第一个数肯定不是0,所以不会出现下标问题
continue;
}else{
//前一个数不是0,则将当前数字换成中文大写
sb.append(numArray[n]);
}
} else {
//如果当前数字不是0,则将数字和单位填入
sb.append(numArray[n]);
sb.append(unit);
}
}
return sb.toString();
}
/**
* 转换双精度小数(使用整数部分和小数部分拼接的方式)
*/
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));
return formatInteger(integ) + "." + formatFractionalPart(dec);
}
/**
* 转换小数部分
*/
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();
}
}
数字转中文大写ArabicToChineseUtils
最新推荐文章于 2024-07-31 16:47:06 发布