想要一段jsp金额大小写转换代码!
比如1234元转换成壹仟贰佰叁拾肆元
不胜感谢!

解决方案 »

  1.   

    这是前一段时间本版的一个兄弟发的
    /**
     *
     * <p>Title: 人民币转成大写</p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2004</p>
     * <p>Company: www.fqf.com.cn</p>
     * @author 范庆丰
     * @version 1.0
     */
    public class changeToBig {

       public changeToBig() {
       }
       
       public String  hangeToBig(double value){
        char[] hunit={'拾','佰','仟'};                                               //段内位置表示
        char[] vunit={'万','亿'};                                                     //段名表示
        char[] digit={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};  //数字表示
        long midVal = (long)(value*100);                                      //转化成整形
        String valStr=String.valueOf(midVal);                                //转化成字符串    String head=valStr.substring(0,valStr.length()-2);               //取整数部分
        String rail=valStr.substring(valStr.length()-2);                     //取小数部分    String prefix="";                                                                 //整数部分转化的结果
        String suffix="";                                                                  //小数部分转化的结果
        //处理小数点后面的数
        if(rail.equals("00")){                                                            //如果小数部分为0
          suffix="整";
        } else{
          suffix=digit[rail.charAt(0)-'0']+"角"+digit[rail.charAt(1)-'0']+"分";        //否则把角分转化出来
        }
        //处理小数点前面的数
        char[] chDig=head.toCharArray();                                                         //把整数部分转化成字符数组
        char zero='0';                                                                                          //标志'0'表示出现过0
        byte zeroSerNum = 0;                                                                            //连续出现0的次数
        for(int i=0;i<chDig.length;i++){                                                               //循环处理每个数字
          int idx=(chDig.length-i-1)%4;                                                                //取段内位置
          int vidx=(chDig.length-i-1)/4;                                                                //取段位置
          if(chDig[i]=='0'){                                                                                  //如果当前字符是0
            zeroSerNum++;                                                                                 //连续0次数递增
            if(zero == '0'){                                                                                    //标志
              zero=digit[0];
            } else if(idx==0 && vidx >0 &&zeroSerNum < 4){
              prefix += vunit[vidx-1];
              zero='0';
            }
            continue;
          }
          zeroSerNum = 0;                                                                                    //连续0次数清零
          if(zero != '0') {                                                                                        //如果标志不为0,则加上,例如万,亿什么的
            prefix+=zero;
            zero='0';
          }
          prefix+=digit[chDig[i]-'0'];                                                                        //转化该数字表示
          if(idx > 0) prefix += hunit[idx-1];
          if(idx==0 && vidx>0){
            prefix+=vunit[vidx-1];                                                                             //段结束位置应该加上段名如万,亿
          }
        }    if(prefix.length() > 0) prefix += '圆';                                                             //如果整数部分存在,则有圆的字样
        return prefix+suffix;                                                                                     //返回正确表示
      }
    public static void main(String args[]){
       changeToBig a=new changeToBig();
       System.out.print(a.hangeToBig(120000.12));
    }
    }