public static String[] danwei = {"分", "角", "", "拾", "佰", "仟", "万", "亿"}; public static String[] chineseNum = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; public static void main(String[] args) { String money = "52055215975.25"; String zhenshu = money.split("\\.")[0]; String xiaoshu = money.split("\\.")[1]; char[] xiaoshuChar = new char[xiaoshu.length()]; char[] zhenshuChar = new char[zhenshu.length()]; int index = 0; xiaoshuChar[index++] = xiaoshu.charAt(1); xiaoshuChar[index++] = xiaoshu.charAt(0); StringBuilder xiaoshuChinese = new StringBuilder(); xiaoshuChinese.append(getChineseChar(1, xiaoshuChar)).append(danwei[1]) .append(getChineseChar(0, xiaoshuChar)).append(danwei[0]); index = 0; for (int i = zhenshu.length() - 1; i >= 0; i--) { zhenshuChar[index++] = zhenshu.charAt(i); } StringBuilder zhenshuChinese = new StringBuilder(); // 个 1 十2 百3 千4 | // 万 5 十6 百7 千8 | // 亿 9 for (int x = zhenshuChar.length-1; x >=0 ; x--) { if (x%8 == 0 && x != 0) zhenshuChinese.append(getChineseChar(x, zhenshuChar)).append(danwei[7]); else yiyinei(zhenshuChar,x,zhenshuChinese); } System.out.println(zhenshuChinese.append(xiaoshuChinese).toString()); } private static String getChineseChar(int i, char[] chars) { return chineseNum[Character.getNumericValue(chars[i])]; } public static void wangyinei(char[] chars,int index,StringBuilder stringBuilder) { int remainder = index % 4; stringBuilder.append(getChineseChar(index, chars)).append(danwei[remainder+2]); } public static void yiyinei(char[] chars,int x,StringBuilder stringBuilder) { if (x%4 == 0 && x != 0) stringBuilder.append(getChineseChar(x, chars)).append(danwei[6]); else wangyinei(chars,x,stringBuilder); }
凑合吧,还挺多bug的,思路是可行的,但是到了百万会变成科学计数,不想改数据类型了,改成大数就可以了package com.newcode;