1.Java文件的编写

package com.cwai.xtag;
import java.util.Scanner;
public class Num2Rmb {
   private String[] hanArr = {"零" , "壹" , "贰" , "叁" , "肆" , 
   "伍" , "陆" , "柒" , "捌" , "玖"}; 
   private String[] unitArr = {"十" , "百" , "千","万","十万","百万","千万","亿","十","百","千","万","千万","亿"}; 
   private String[] unitArr1 = {"分" , "角"}; 
   /** 
   * 把一个浮点数分解成整数部分和小数部分字符串 
   * @param num 需要被分解的浮点数 
   * @return 分解出来的整数部分和小数部分。第一个数组元素是整数部分,第二个数组元素是小数部分。 
   */ 
   public String[] divide(double num) { 
     // 将一个浮点数强制类型转换为long,即得到它的整数部分 
     int zheng = (int)num; 
     // 浮点数减去整数部分,得到小数部分,小数部分乘以100后再取整得到2位小数 
     int xiao = (int) Math.round((num - zheng) * 100); 
     // 下面用了2种方法把整数转换为字符串 
     //System.out.println("divide:"+new String[]{zheng + "", String.valueOf(xiao)});
     return new String[]{zheng + "", String.valueOf(xiao)};  }   public int[] toNum(double    int num1 = (int)num;      Integer zheng = (Integer)num1; 
     //String s1 = zheng.toString(); 
     //Integer numk1 = (int) (zheng%10000);//取整数的底四位 
     String s1 = zheng.toString(); 
     int numLen1 = s1.length(); 
     int[] numarry = new int[numLen1]; 
     for(int i=0;i<numLen1;i++) { 
       numarry[i] = s1.charAt(i) - 48; 

       //numarry[0][i]=numarry1[i]; 
       System.out.println(i+":"+numarry[i]); 
     } 
     return numarry; 
   } 
   /** 
   * 把一个四位的数字字符串变成汉字字符串 
   * @param numStr 需要被转换的四位的数字字符串 
   * @return 四位的数字字符串被转换成的汉字字符串。 
   */ 
   public String toHanStr(int[] numarry) { 
     String result = ""; 
     int numLen = numarry.length; 
     // 依次遍历数字字符串的每一位数字 
     for (int i = 0 ; i < numLen ; i++ ) { 
       // 把char型数字转换成的int型数字,因为它们的ASCII码值恰好相差48 
       // 因此把char型数字减去48得到int型数字,例如'4'被转换成4。 
       // int num = numarry.charAt(i) - 48; 
       // 如果不是最后一位数字,而且数字不是零,则需要添加单位(千、百、十) 
       if ( i != numLen - 1&& numarry[i]!= 0 ) { 
         result += hanArr[numarry[i]] + unitArr[numLen - 2 - i]; 
       } else if (i>0 )      { 
         if ((numarry[i]==0)&&(numarry[i-1]==0) ) { 
         //result +=""; 
         } 
       } else if(i == numLen - 1&& numarry[i]== 0 ) { 

       } 
       // 否则不要添加单位 
       else { 
         result += hanArr[numarry[i]]; 
       } 
     } 
     //System.out.println("result:"+result+hanArr[numarry[numLen-1]]);
     return result+hanArr[numarry[numLen-1]]; 
   } 


   public String toHanStr1(String numStr) { 
     String result = ""; 
     int numLen = numStr.length(); 
     // 依次遍历数字字符串的每一位数字 
     for (int i = 0 ; i < numLen ; i++ ) 
     { 
       // 把char型数字转换成的int型数字,因为它们的ASCII码值恰好相差48 
       // 因此把char型数字减去48得到int型数字,例如'4'被转换成4。 
       int num = numStr.charAt(i) - 48; 
       // 如果不是最后一位数字,而且数字不是零,则需要添加单位(千、百、十) 
       if ( i != numLen - 1 && num != 0) 
       { 
         result += hanArr[num] + unitArr1[numLen - 1 - i]; 
       } 
       // 否则不要添加单位 
       else 
       { 
         result += hanArr[num]; 
       } 
     } 
     return result+"分"; 
   } 

   public static void main(String[] args) { 
     System.out.println("请输入要转换的钱数:"); 
     @SuppressWarnings("resource") 
     Scanner in = new Scanner(System.in); 
     Double inmun = in.nextDouble(); 
     Num2Rmb nr = new Num2Rmb(); 
     // 测试把一个浮点数分解成整数部分和小数部分 
     //System.out.println(Arrays.toString(nr.divide(236711125.123))); 
     // 测试把一个四位的数字字符串变成汉字字符串 
     System.out.print(nr.toHanStr(nr.toNum(inmun))+"圆"); 
     System.out.print(nr.toHanStr1(nr.divide(inmun)[1])); 
     //System.out.println(nr.toHanStr("100")); 
   } 

}
 
2.JSP内容编写
  <tr>
     <td class="GridHeader" colspan="4" align="right" >
     合计(大写)<font color="red">*</font>:
     </td>
     <td class="GridHeader" colspan="7">
       <input id="CLHZHJ" name="CLHZHJ" οnclick="total_hjdx('<%= (xcapList.size()>0) ? xcapList.size():1 %>')" style="width:100%;text-align: center;" value="  <%=XDataConvert.TryToString(xg_Map.get("CLHZHJ")) %>"/>
       <input type="hidden" id="CLHZHJ_NUM" name="CLHZHJ_NUM" value="<%=XDataConvert.TryToDouble(xg_Map.get("CLHZHJ_NUM")) %>"/>
     </td>
   </tr>  
  //JS内容
  
  function total_hjdx(btn){ //计算合计总钱数
     var tot = 0;
     var jt;
     for(var i=1;i <= btn;i++){//从html中获取钱数并相加
       var n1 = document.getElementById("hj_"+i).value;
       if( "" != n1){
         jt = parseFloat(n1);
         tot += jt;
       }
     }
     
     document.getElementById("CLHZHJ_NUM").value = tot.toString();//存储总钱数(数字)
     var str = ajaxGetData("NUM2RMB",(tot.toString() != "0")?(tot.toString()):"");//利用aJax获取汉字大写钱数(从3中获取大写钱数)
     document.getElementById("CLHZHJ").value = (str).toString();//将获取的大写钱数赋值给显示的<input>框
   }


3.aJax

<%@page import="com.cwai.xtag.Num2Rmb"%>     //必不可少
…… 
<%
String req_L = request.getParameter("l")==null?"":request.getParameter("l").trim().toUpperCase();
String req_V = request.getParameter("v")==null?"":request.getParameter("v");
xGL_YHXX yh = xGL_YHXX.xGetCurrentUser(request);
DataManipulation dataManipulation = (DataManipulation) ApplicationContext.getContext().getBean("dataManipulation");
//登陆超时是否能够查询,具体的类别req_L判断后控制BaseDAO dao = null;
try{
   dao = new BaseDAO();
   if(yh == null){//登陆超时,不必执行查询以节省资源
     out.print("0");
     return;
   }
   if("".equals(req_L)){//类型为空,不必执行查询直接返回
     out.print("0");
     return;
   }
  ……
  }else if("NUM2RMB".equals(req_L)){//数字转人民币
     if("".equals(req_V)){
       out.print("");
       return;
     }else{
       //System.out.println(req_V);
       Num2Rmb nr = new Num2Rmb();
       Double req = Double.parseDouble(req_V);
       String str1 = nr.toHanStr(nr.toNum(req))+"圆";
       String str2 = nr.toHanStr1(nr.divide(req)[1]);
       out.print(str1+str2);
       return;
     }
   }else if("JJRSZ".equals(req_L)){  ……
}catch(Exception e){
   out.print("0");
   System.out.println("getdata异常:类型 req_L:["+req_L+"] , req_V:["+req_V+"]");
   e.printStackTrace();
}finally{
   if(dao != null) {
     dao.closeConn();
   }
}
%>