package com.test; import java.math.BigDecimal; import java.math.RoundingMode; public class Number2Chinese { private double number; String [] strunit = {"","拾","百","千","万","十","百","千","亿","十","百","千","万","兆"}; String [] strnum = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; String [] strDecimalUnit = {"角","分"}; /** * @return the number */ public double getNumber() { return number; } /** * @param number the number to set */ public void setNumber(double number) { this.number = number; } private String Convert(long longNumber, boolean isDecimal) { long temp = longNumber; int position = 0; String chinese = ""; while(temp > 0) { if(!(position==0 && temp%10 == 0)) { chinese = strnum[(int)temp%10] + (isDecimal ? strDecimalUnit[position] : strunit[position]) + chinese; } position++; temp = temp / 10; } if(isDecimal) { if(chinese != "") chinese = "零"+ chinese; }else{ if(chinese != "") chinese += "圆"; } return chinese; } private String Convert(double numberD){ BigDecimal bigDecimal = BigDecimal.valueOf(numberD).setScale(2, RoundingMode.CEILING); double doubleNumber = bigDecimal.doubleValue(); long intergerNumber = bigDecimal.longValue(); int decimalNumber = (int)((doubleNumber*100)%100); return Convert(intergerNumber, false) + Convert(decimalNumber, true); } public String Convert(){ return Convert(number); } public static void main(String[] args){ Number2Chinese c = new Number2Chinese(); c.setNumber(1212365423); System.out.print(c.Convert()); } }