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());
}
}