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

 //将数字字符串转换成大写金额字符串
 //@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();
 }

 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值