JAVA数字转大写中文
whaosoft
2008-12-27
public class NumberToChinese {
private static final String[] hanzi = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; private static String fourToHanZi(String digit) { int value = 0; int exponent = 0; boolean hasZero = false; StringBuffer chineseDigit = new StringBuffer(); value = Integer.parseInt(digit); for(exponent = 4; exponent>=0; exponent--) { String[] unit = {"", "拾", "佰", "仟"}; int divisor = (int)Math.pow(10, exponent); int result = value / divisor; if(result != 0) { chineseDigit.append(hanzi[result]); chineseDigit.append(unit[exponent]); hasZero = false; } else if(result == 0 && !hasZero) { chineseDigit.append(hanzi[0]); hasZero = true; } else { } value = value % divisor; } if(chineseDigit.substring(0,1).equals("零")) { return chineseDigit.deleteCharAt(0).toString(); } else{ return chineseDigit.toString(); } } public static String fourToHanZiBig(String digit) { String[] unit = {"圆", "万", "亿"}; String chineseDigitWan = new String(); //存储万位数字 String chineseDigitYi = new String(); //存储亿位数字 StringBuffer chineseDigit = new StringBuffer(); if(digit.length() <= 5 ) { return fourToHanZi(digit); } else{ if(digit.length() <= 8 ) { chineseDigitWan = digit.substring(0,digit.length() - 4 ); chineseDigit.append(fourToHanZi(chineseDigitWan)+unit[1]+fourToHanZi(digit.substring(digit.length() - 4,digit.length()))); } else { chineseDigitYi = digit.substring(0,digit.length() - 8 ); chineseDigit.append(fourToHanZi(chineseDigitYi)+unit[2]+fourToHanZi(digit.substring(digit.length() - 8,digit.length() - 4))+unit[1]+fourToHanZi(digit.substring(digit.length() - 4,digit.length()))+unit[0]); } } return chineseDigit.toString(); } public static void main(String args[]) { System.out.println(fourToHanZiBig("19814834802")); } } N年前写的这回用就找出来了 没写到亿 因为一般公司都没那么牛进出帐过亿的 By whaosoft |
|
bardo
2011-04-17
建议看看这一个
http://bardo.iteye.com/blog/983559 |