金额大小写转换!

 /**
    * 把数字转换成中文大写金额,分以下小数截位
    * @param dblMoney double:数字
    * @param blnFull boolean:
    *               =False,2001.30->贰仟零壹元叁角整
    *               =True,2001.30->贰仟零佰零拾壹元叁角零分
    * @param bZheng boolean:是否强制末尾加整字(如果不是到分,那么一定有整)
    * @return String
    */
   public static final String chineseAmount(double dblMoney, boolean blnFull, boolean bZheng) {

      String conChineseNum = "零壹贰叁肆伍陆柒捌玖";
      String conChineseMUnit = "分角元拾佰仟万拾佰仟亿";
      String strMoney=null;
      String T1="";
      char T2,t0=' ';
      int ii,jj,kk;
      boolean noZero = false;

      strMoney = new DecimalFormat("0.00").format(YssD.round(dblMoney,2,true));//去掉前导0

      kk = 0;
      if (blnFull) {
         for (ii = strMoney.length() - 1; ii >= 0; ii--) {
            T2 = strMoney.charAt(ii);
            if(T2>='0' && T2<='9'){
               T1 = String.valueOf(conChineseNum.charAt(T2 - '0')) +
                     String.valueOf(conChineseMUnit.charAt(kk++)) + T1;
               if (kk > 10) kk -= 8;
            }
         }
      }
      else {
         for (ii = strMoney.length() - 1; ii >= 0; ii--) {
            T2 = strMoney.charAt(ii);
            if (T2 == '0' && !noZero) {
               if (kk == 2 || kk == 6)
                  T1 = String.valueOf(conChineseMUnit.charAt(kk)) + T1;
               else if (kk == 10)
                  T1 = String.valueOf(conChineseMUnit.charAt(kk)) +
                        (T1.charAt(0) == '万' ? T1.substring(1) : T1);

               if (++kk > 10) kk -= 8;
            }
            else if (T2 == '.' && !noZero) {

            }else{
               noZero = true;
               if (T2 >= '0' && T2 <= '9') {
                  if (T2 == '0') {
                     if (T2 != t0) {
                        t0 = T2;
                        jj = T2 - '0';
                        if (kk == 2 || kk == 6 || kk == 10)
                           T1 = String.valueOf(conChineseMUnit.charAt(kk)) + T1;
                        else
                           T1 = String.valueOf(conChineseNum.charAt(jj)) + T1;
                     }
                     else {
                        if (kk == 2 || kk == 6)
                           T1 = String.valueOf(conChineseMUnit.charAt(kk)) + T1;
                        else if (kk == 10)
                           T1 = String.valueOf(conChineseMUnit.charAt(kk)) +
                                 (T1.charAt(0) == '万' ? T1.substring(1) : T1);

                     }
                  }else{
                     t0 = T2;
                     jj = T2 - '0';
                     if (kk == 10 && T1.charAt(0) == '万') T1 = T1.substring(1);
                     T1 = String.valueOf(conChineseNum.charAt(jj)) +
                           String.valueOf(conChineseMUnit.charAt(kk)) + T1;
                  }
                  if (++kk > 10) kk -= 8;
               }
            }
         }
         T2 = T1.charAt(0);
         while (conChineseMUnit.indexOf(T2)>=0 || T2=='零') {
            T1 = T1.substring(1);
            if (T1.length() > 1)
               T2 = T1.charAt(0);
            else
               break;
         }
         if (T1.length() == 0) T1 = "零元";
      }

      return T1.concat(bZheng || T1.charAt(T1.length()-1) != '分' ? "整": "");
   }

 

public String concat(String str) {
        int otherLen = str.length();
        if (otherLen == 0) {
            return this;
        }
        char buf[] = new char[count + otherLen];
        getChars(0, count, buf, 0);
        str.getChars(0, otherLen, buf, count);
        return new String(0, count + otherLen, buf);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值