阿拉伯数字转换中文写法,阿拉伯中文写法,public class
分享于 点击 4603 次 点评:123
阿拉伯数字转换中文写法,阿拉伯中文写法,public class
public class Test7{ public static void main(String[] args) { String number = "345677886555.4444"; String beforePoint = ""; String afterPoint = ""; int index = -1; /* 判断是否存在小数点 有就拆分两个部分,没有就直接把number赋值到 beforePoint */ if (-1 != (index = number.indexOf('.'))) { /* 根据 index 拆分成2部分 */ beforePoint = number.substring(0, index); afterPoint = number.substring(index); afterPoint = getAfterPoint(afterPoint);/* 获取小数点后的中文写法 */ } else { beforePoint = number; } beforePoint = getBeforePoint(beforePoint);/* 获取小数点前(包括无小数点时)的中文写法 */ System.out.println("阿拉伯数字:" + number); System.out.println("中文数字:" + beforePoint + afterPoint); } /* 获取小数点前(包括无小数点时)的中文写法 */ public static String getBeforePoint(String beforePoint) { StringBuffer temp = new StringBuffer(); String[] key = { "", "拾", "佰", "仟" };/* 3个位值 */ for (int i = 0; i < beforePoint.length(); i++) { char ch = beforePoint.charAt(i);/* ch 为当前索引的char值 */ int countBit = beforePoint.length() - 1 - i;/* * countBit * 为当前统计的位数,以便于添加 万,亿 */ /* 判断是否为 0 值,不是就进行转换,是则进行else处理 */ if (ch != '0') { temp.append(switchNumber(ch) + key[countBit % 4]); } else { char isZeroOrNotstr = temp.toString().charAt(temp.length() - 1); /* isZeroOrNotstr 获取最后一位的 中文写法,在后面进行判断是否为 “零” */ /* 不等于“零” 才进行添加,一旦存在“零” 了,就不添加了 */ if (isZeroOrNotstr != '零') { temp.append("零"); } } char isZeroOrNotstr = temp.toString().charAt(temp.length() - 1); /* isZeroOrNotstr 获取最后一位的 中文写法,在后面进行判断是否为 “零” */ if (countBit == 4)/* 判断当前 countBit位数 是否为 4,是就添加“万” */ { /* 假如最后一位中文写法为 “零”了,则进行替换,替换成 “万” */ if (isZeroOrNotstr == '零') { temp.replace(temp.length() - 1, temp.length(), "万"); } else { temp.append("万"); } } if (countBit == 8)/* 判断当前 countBit位数 是否为8,是就添加“亿” */ { /* 假如最后一位中文写法为 “零”了,则进行替换,替换成 “亿” */ if (isZeroOrNotstr == '零') { temp.replace(temp.length() - 1, temp.length(), "亿"); } else { temp.append("亿"); } } } return temp.toString(); } /* 获取小数点后的中文写法 */ public static String getAfterPoint(String afterPoint) { StringBuffer temp = new StringBuffer("点");/* 首先加个 “点” */ /* 小数点依次转换,不考虑位值 */ for (int i = 0; i < afterPoint.length(); i++) { temp.append(switchNumber(afterPoint.charAt(i))); } return temp.toString(); } /* 数字 ---转换---- 中文写法的方法 */ private static String switchNumber(char ch) { String returnStr = ""; switch (ch) { case '1': returnStr = "壹"; break; case '2': returnStr = "贰"; break; case '3': returnStr = "叁"; break; case '4': returnStr = "肆"; break; case '5': returnStr = "伍"; break; case '6': returnStr = "陆"; break; case '7': returnStr = "柒"; break; case '8': returnStr = "捌"; break; case '9': returnStr = "玖"; break; case '0': returnStr = "零"; break; } return returnStr; }}//该片段来自于http://byrx.net
用户点评