以前读书的时候对java基础 理解的不是很深刻,很多东西没有理解和领悟,今天看到了人民币的问题,所以就决定写一个出来,在这里将以前比较简单的进行了升级,包含了小数点后的数据,并进行了四舍五入。
public class JavaTest09 { private static final char[] data = new char[]{ '壹','贰','叁','肆','伍','陆','柒','捌','玖' }; private static char[] units = new char[]{ '分','角','元','拾','佰','仟','万','拾','佰','仟','亿' }; public static String convert(Double money){ StringBuffer buffer = new StringBuffer(); StringBuffer sbf = new StringBuffer(); int unit = 2; int uniti = 0; //对传入的数据进行四舍五入,只保留2位小数 NumberFormat nFormat = NumberFormat.getInstance(); nFormat.setMaximumFractionDigits(2); //将double类型的数值转换成String型 String moneyString = nFormat.format(money); //money = Double.parseDouble(moneyString); //获取小数点坐在的位置 int index = moneyString.lastIndexOf("."); //根据小数点来进行数据分割整数部分 int Zheng = Integer.parseInt(moneyString.substring(0, index)); //小数部分 int Xiao = Integer.parseInt(moneyString.substring(index+1, moneyString.length())); //存放小数 while(Xiao != 0){ int li = Xiao%10; if(li!=0){ sbf.insert(0, units[uniti++]); sbf.insert(0, data[li-1]); } Xiao /= 10; } //存放整数 while(Zheng != 0){ buffer.insert(0, units[unit++]); double number = Zheng%10; buffer.insert(0, data[(int) (number-1)]); Zheng /= 10; } sbf.insert(0, buffer); return sbf.toString(); } /** * @param args */ public static void main(String[] args) { System.out.println(convert(81.2557)); } }
人民币转换
1 package t0107; 2 3 public class Money { 4 5 private static final char[] data = new char[]{ 6 '零','壹','贰','叁','肆','伍','陆','柒','捌','玖', 7 }; 8 private static char[] units = new char[]{ 9 '元','拾','佰','仟','万','拾','佰','仟','亿', 10 }; 11 /** 12 * @param args 13 */ 14 public static void main(String[] args) { 15 System.out.println( convert(12123313) ); 16 17 } 18 19 public static String convert(int money){ 20 StringBuffer sbf = new StringBuffer(); 21 int unit = 0; 22 while(money != 0){ 23 24 sbf.insert(0, units[unit++]); 25 int number = money%10; 26 sbf.insert(0, data[number]); 27 money /= 10; 28 } 29 return sbf.toString(); 30 } 31 32 }