600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Java阿拉伯数字转换为中文大写

Java阿拉伯数字转换为中文大写

时间:2020-02-06 07:15:38

相关推荐

Java阿拉伯数字转换为中文大写

Java 阿拉伯数字转换为中文大写数字

StringHelper工具类:

public class StringHelper {public static String[] strToStrArray(String str, String separator) {return strToStrArrayManager(str, separator);}private static String[] strToStrArrayManager(String str, String separator) {StringTokenizer strTokens = new StringTokenizer(str, separator);String[] strArray = new String[strTokens.countTokens()];int i = 0;while (strTokens.hasMoreTokens()) {strArray[i] = strTokens.nextToken().trim();i++;}return strArray;}}

核心类:

public class ChineseNumber {private static final String[] BEFORE_SCALE = { "万", "仟", "佰", "拾", "亿", "仟", "佰", "拾", "万", "仟", "佰", "拾", "" };private static final String[] AFTER_SCALE = { "角", "分" };private static final String DEFAULT_PATH_SEPARATOR = ".";private static final Map<String, String> NUMBER_MAPPING = new HashMap<String, String>();static {NUMBER_MAPPING.put("0", "零");NUMBER_MAPPING.put("1", "壹");NUMBER_MAPPING.put("2", "贰");NUMBER_MAPPING.put("3", "叁");NUMBER_MAPPING.put("4", "肆");NUMBER_MAPPING.put("5", "伍");NUMBER_MAPPING.put("6", "陆");NUMBER_MAPPING.put("7", "柒");NUMBER_MAPPING.put("8", "捌");NUMBER_MAPPING.put("9", "玖");}public static String getChineseNumber(String number) {return getChineseNumber(number, null, null);}public static String getChineseNumber(String number, String unit, String postfix) {String[] numbers = StringHelper.strToStrArray(number, DEFAULT_PATH_SEPARATOR);if (numbers.length > 2) {new NumberFormatException("数字格式错误!");}int length = numbers[0].length();int isZero = 0;StringBuffer result = new StringBuffer();for (int i = 0; i < length; i++) {String digit = String.valueOf(numbers[0].charAt(i));boolean allZero = true; // 如果后继的全部是零,则跳出for (int j = i; j < length; j++) {if (numbers[0].charAt(j) != '0') {allZero = false;break;}}if (allZero) {boolean hasValue = false;for (int z = i; z >= 0; z--) {if (numbers[0].charAt(z) != '0' && length - z <= 7 && length - z >= 5) {hasValue = true;break;}}// 加万单位if ( ( length - i > 4 && length <= 8 ) || ( hasValue && length - i > 4 )) {result.append(BEFORE_SCALE[8]);}// 加亿单位if (length - i >= 9) {result.append(BEFORE_SCALE[4]);}break;}if (length < 9 && length - i == 5) {if (!"0".equals(digit) && isZero > 0) {result.append(NUMBER_MAPPING.get("0"));}if ("0".equals(digit)) {result.append(BEFORE_SCALE[8]);if (isZero > 0) {result.append(NUMBER_MAPPING.get("0"));}continue;}}if ("0".equals(digit) && length > 9 && length - i == 9) {result.append(BEFORE_SCALE[4]);continue;}if (isZero < 1 || !"0".equals(digit)) {if ("0".equals(digit)) {if (length - i != 6 && length - i != 7) {result.append(NUMBER_MAPPING.get(digit));}} else {result.append(NUMBER_MAPPING.get(digit));}if (!"0".equals(digit)) {result.append(BEFORE_SCALE[BEFORE_SCALE.length - length + i]);}}if ("0".equals(digit)) {isZero++;} else {isZero = 0;}}result.append(unit == null ? "圆" : result.append(unit));if (numbers.length == 1) {result.append(postfix == null ? "整" : result.append(postfix));return result.toString();}length = numbers[1].length();for (int j = 0; j < length; j++) {if (j > 2) {break;}if (numbers[1].charAt(j) == '0') {continue;}result.append(NUMBER_MAPPING.get(String.valueOf(numbers[1].charAt(j))));result.append(AFTER_SCALE[j]);}result.append(postfix == null ? "整" : result.append(postfix));return result.toString();}public static String getChineseNumber(int number) {return getChineseNumber(new Integer(number));}public static String getChineseNumber(int number, String unit, String postfix) {return getChineseNumber(new Integer(number), unit, postfix);}public static String getChineseNumber(Long number) {return getChineseNumber(number.toString(), null, null);}public static String getChineseNumber(Integer number) {return getChineseNumber(number.toString(), null, null);}public static String getChineseNumber(Integer number, String unit, String postfix) {return getChineseNumber(number.toString(), unit, postfix);}public static String getChineseNumber(Long number, String unit, String postfix) {return getChineseNumber(number.toString(), unit, postfix);}public static String getChineseNumber(long number) {return getChineseNumber(new Long(number));}public static String getChineseNumber(long number, String unit, String postfix) {return getChineseNumber(new Long(number), unit, postfix);}public static String getChineseNumber(double number, String unit, String postfix) {DecimalFormat f = (DecimalFormat) DecimalFormat.getInstance();f.applyLocalizedPattern("#.##");return getChineseNumber(f.format(number), unit, postfix);}public static String getChineseNumber(double number) {return getChineseNumber(number, null, null);}public static String getChineseNumber(Double number) {return getChineseNumber(number.doubleValue());}public static String getChineseNumber(Double number, String unit, String postfix) {return getChineseNumber(number.doubleValue(), unit, postfix);}public static void main(String[] args) {System.out.println(getChineseNumber());System.out.println(getChineseNumber(2345.632234));System.out.println(getChineseNumber(2345.68657));System.out.println(getChineseNumber(235667));}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。