/**
* 大写金额转换器
* @author Samland
* @version 1.1, Oct. 9th, 2011
*/
public class CurrencyUtil {
public static String capitalMoney(Double value) {
if (value==null) return null;
String[] sCaption = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖","分","角","元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万","拾","佰","仟","亿"};
if (value==0)
return "零元整";
StringBuffer result = new StringBuffer();
DecimalFormat df = new DecimalFormat("####.00");
String strValue = df.format(value)+"00";
// System.out.print(strValue+"=");
int p = strValue.indexOf(".");
if (p>0) {
strValue = strValue.substring(0, p+3);
strValue = strValue.replaceAll("\\.", "");
}
if (value<0) {
result.append("负");
strValue = strValue.substring(1);
}
String sTemp = "";
char[] charArray = strValue.toCharArray();
int iLength = charArray.length;
for (int i=iLength; i>0; i--) {
String sUnit = sCaption[9+i];
String sValue = String.valueOf(charArray[iLength-i]);
String sNextValue = i>1?String.valueOf(charArray[iLength-i+1]):"";
// System.out.println(sValue+sUnit);
if (sValue.equals("0")) {
if (sUnit.equals("分")) {
break;
}
if (i>1 && sNextValue.equals("0")
&& sUnit.equals("角")) {
result.append(sTemp);
result.append("元整");
}
if ((i-3)%4==0) {
if (sUnit.equals("元")||sUnit.equals("亿")) {
result.append(sTemp);
}
sTemp = sUnit;
}
if (i>1 && !sNextValue.equals("0") &&!sUnit.equals("元")) {
result.append(sTemp);
result.append("零");
sTemp = "";
}
}else{
result.append(sTemp);
result.append(sCaption[Integer.parseInt(sValue)]);
result.append(sUnit);
sTemp = "";
}
}
sTemp = result.toString();
sTemp = sTemp.replaceAll("亿万","亿");
sTemp = sTemp.replaceAll("元元","元");
return sTemp;
}