//将数字字符串转换成大写金额字符串
//@author 何禧
//@created 2004/11/15 19:37
//@param 数字字符串
//@return 大写金额字符串
//@throws Exception
//可处理的情况包括如下这些数字形式: [.] [0.] [.0] [.3] [.32] [1.] [23]
public String cnCurrency(String sNumber) throws Exception
{
String sUnit = "分角元拾佰仟万拾佰仟亿拾佰仟兆拾佰仟";
String sChinese = "壹贰叁肆伍陆柒捌玖";
int nUnit; //货币单位下标
int nDotPos; //传入的数字中,小数点所在的位置
int nLen; //长度
int nValue; //临时数值
int i; //循环变量
String sInteger; //整数部分
String sDecimal; //小数部分
String sSuffix=""; //后缀部分
if (sNumber == null) throw new Exception("没有传入数字!");
//获取小数点所在位置
nDotPos = sNumber.indexOf(".");
if (nDotPos == -1){
sInteger = (sNumber.equals(""))?"0":sNumber;
sDecimal = "00";
}else{
sNumber = new StringBuffer().append("0").append(sNumber).append("00").toString();
nDotPos = sNumber.indexOf(".");
sInteger = sNumber.substring(0,nDotPos);
sDecimal = sNumber.substring(nDotPos+1).substring(0,2);
}
StringBuffer sbChinese = new StringBuffer();
//开始处理整数部分
nLen = sInteger.length();
for(i=0;i 0) )
sbChinese.append("元");
//开始处理小数部分
if (sDecimal.equals("00")){
sSuffix = "整";
}else{
nValue = Integer.parseInt(sDecimal.substring(0,1));
if (nValue != 0) sbChinese.append(sChinese.substring(nValue-1,nValue)).append(sUnit.substring(1,2));
nValue = Integer.parseInt(sDecimal.substring(1,2));
if (nValue != 0) sbChinese.append(sChinese.substring(nValue-1,nValue)).append(sUnit.substring(0,1));
}
//假如小数部分没写任何内容,
//返回中文结果
if (sbChinese.length() == 0) sSuffix = "零元";
sbChinese.append(sSuffix);
return sbChinese.toString();
}