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" onclick="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();
  }
}
%>

JAVA将数字钱数转换为大写的更多相关文章

  1. Java中实现十进制数转换为二进制的三种思路

    Java中实现十进制数转换为二进制 第一种:除基倒取余法 这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2...依次循环,直到商为0结束,把余数倒 ...

  2. java将所有的字符串转换为大写或小写

    public class DaXie { public static void main(String[] args) { /**将所有的字符串转换成大写或小写字母并打印出来*/ String str ...

  3. Java中实现十进制数转换为二进制的三种方法

    第一种:除基倒取余法 这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2...依次循环,直到商为0结束,把余数倒着依次排列,就构成了转换后的二进制数 ...

  4. MSSQL 数字钱转化为大写

    --说明: --1.本函数范围从 毫 ~ 兆 --2.有四种精度(元,角 ,分,厘 ,毫) --3.有三种进位规则(四舍五入,接舍去,非0就入) --参数说明:dbo.MoneyToCapital( ...

  5. java中从1970-1-1到当前时间之间的毫秒数转换为oracle date

    java中System.currentTimeMillis()取到的是从1970-01-01 00:00:00.000到当前时间的毫秒数,一个long类型的值. 现在oracle数据库中某表中存取的是 ...

  6. 写一个方法完成如下功能,判断从文本框textbox1输入的一个字符,如果是数字则求该数字的阶乘,如果是小写字条,则转换为大写,大写字符不变,结果在文本框textbox2中显示

    窗体设计: 代码: using System; using System.Collections.Generic; using System.ComponentModel; using System. ...

  7. 算法--java实现将数字转换成人民币大写(迅雷面试题)

    今天去迅雷面试,是个数字转换成人民币的算法题: public class Rmb { /** * 人民币的基本信息和操作 * * @author soyoungboy * @version 1.0 * ...

  8. Java判断一个字符串中有多少大写字母、小写字母和数字

    Java判断一个字符串中有多少大写字母.小写字母和数字 思路: 大写字母就是A-Z之间,小写字母是a-z之间,数字就是0-9之间,于是做判断就好:用到的String知识点,遍历字符串, 长度方法len ...

  9. 将金额数字转换为大写汉字的js函数

    //将金额数字转换为大写汉字的函数 function convertCurrency(money) { //汉字的数字 var cnNums = new Array('零', '壹', '贰', '叁 ...

随机推荐

  1. kvm虚拟化之convirt集中管理平台搭建

    情况说明: (1)本文采用OEL6.3x64操作系统,需要有KVM安装环境.(2)convirt2.1.1采用源码方式安装,convirt环境分别两部分,一部分是cms,用于管理kvm/xen虚拟主机 ...

  2. leecode刷题(21)-- 删除链表的倒数第N个节点

    leecode刷题(21)-- 删除链表的倒数第N个节点 删除链表的倒数第N个节点 描述: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2- ...

  3. java下载文件注意点

    前台: 不建议使用ajax,可以使用window.location.href 后台: 三个参数--> response path filename--filename如果要防止乱码,可以用Str ...

  4. ecshop后台0day漏洞原理+利用方法 XSS+Getshll

    发布日期:2012-10.25 发布作者:dis9@ztz 漏洞类型:跨站攻击 代码执行 0x0 后台getshell 在 includes/cls_template.php fetch函数 /** ...

  5. mxonline实战2, 后台管理神器xadmin

          对应github地址:xadmin的使用   第三天:xadmin的安装以及各应用模型的后台管理注册     一. 安装xamdin     1. 源码包下载地址 https://gith ...

  6. Java初学者的学习路线建议

    java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈 ...

  7. P4090 [USACO17DEC]Greedy Gift Takers

    题目链接 题意分析 首先 如果当前序列中一头奶牛拿不到礼物的话 那么他后面的奶牛也拿不到礼物 所以我们可以二分 由于可以操作无限次 所以我们对于当前\([1,mid)\)的奶牛按照\(c\)值排序之后 ...

  8. 基于CH340的一键下载电路

    一.CH340简介 CH340 是一个 USB 总线的转接芯片,实现 USB 转串口或者 USB 转打印口.CH340是国产芯片,应用场合居多,市场占有率很高.常用的USB转串口芯片还有CP2102. ...

  9. springcloud(四)-Eureka Server集群

    Eureka Server的高可用 这一节我们接着上一节说. 有分布式应用开发经验的朋友应该发现,前文编写的单节点Eureka Server并不适合线上生产环境.Eureka Client会定时连接E ...

  10. Mac下使用Eclipse的Show in Terminal提示command not found: mvn

    在Mac下一般配置了Maven的环境变了一般都不会提示,但是如果使用zsh的扩展之后,系统默认的环境变量配置文件会发生变化,尤其使用Eclipse打开终端时,默认不会去读取用户目录下的~/.bashr ...