将数字字符串转换成大写金额字符串

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

//将数字字符串转换成大写金额字符串

//@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();

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航