JAVA将数字钱数转换为大写
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将数字钱数转换为大写的更多相关文章
- Java中实现十进制数转换为二进制的三种思路
		Java中实现十进制数转换为二进制 第一种:除基倒取余法 这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2...依次循环,直到商为0结束,把余数倒 ... 
- java将所有的字符串转换为大写或小写
		public class DaXie { public static void main(String[] args) { /**将所有的字符串转换成大写或小写字母并打印出来*/ String str ... 
- Java中实现十进制数转换为二进制的三种方法
		第一种:除基倒取余法 这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2...依次循环,直到商为0结束,把余数倒着依次排列,就构成了转换后的二进制数 ... 
- MSSQL  数字钱转化为大写
		--说明: --1.本函数范围从 毫 ~ 兆 --2.有四种精度(元,角 ,分,厘 ,毫) --3.有三种进位规则(四舍五入,接舍去,非0就入) --参数说明:dbo.MoneyToCapital( ... 
- java中从1970-1-1到当前时间之间的毫秒数转换为oracle date
		java中System.currentTimeMillis()取到的是从1970-01-01 00:00:00.000到当前时间的毫秒数,一个long类型的值. 现在oracle数据库中某表中存取的是 ... 
- 写一个方法完成如下功能,判断从文本框textbox1输入的一个字符,如果是数字则求该数字的阶乘,如果是小写字条,则转换为大写,大写字符不变,结果在文本框textbox2中显示
		窗体设计: 代码: using System; using System.Collections.Generic; using System.ComponentModel; using System. ... 
- 算法--java实现将数字转换成人民币大写(迅雷面试题)
		今天去迅雷面试,是个数字转换成人民币的算法题: public class Rmb { /** * 人民币的基本信息和操作 * * @author soyoungboy * @version 1.0 * ... 
- Java判断一个字符串中有多少大写字母、小写字母和数字
		Java判断一个字符串中有多少大写字母.小写字母和数字 思路: 大写字母就是A-Z之间,小写字母是a-z之间,数字就是0-9之间,于是做判断就好:用到的String知识点,遍历字符串, 长度方法len ... 
- 将金额数字转换为大写汉字的js函数
		//将金额数字转换为大写汉字的函数 function convertCurrency(money) { //汉字的数字 var cnNums = new Array('零', '壹', '贰', '叁 ... 
随机推荐
- “全栈2019”Java异常第十九章:RuntimeException详解
			难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ... 
- String类的操作方法
			因String属于java核心包lang包的东西,所以不需要导包! /* * 字符串操作 * */ String name = "jck"; String name1 = &quo ... 
- 常见的HTTP请求应答返回码列表
			200 OK 请求成功.一般用于GET与POST请求 300 Multiple Choices 多种选择.请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例 ... 
- rpm 卸载
			卸载:python-urlgrabber-3.9.1-9.el6.noarch rpm -e python-urlgrabber-3.9.1-9.el6.noarch 
- java后台简单从腾讯云下载文件通知前端以附件的形式保存
			腾讯云对象存储和阿里云差不多 这是我的配置 /** * 腾讯云client * @return COSClient */ public static COSClient getCOSClient() ... 
- 多并发编程基础 之进程  Process
			原贴 https://www.cnblogs.com/gbq-dog/p/10299663.html 1. 进程的理论知识 1.1 操作系统的背景知识 顾名思义,进程即正在执行的一个过程.进程是对正 ... 
- MySQL数据库的账户管理
			账户管理 在生产环境下操作数据库时,绝对不可以使用root账户连接,而是创建特定的账户,授予这个账户特定的操作权限,然后连接进行操作,主要的操作就是数据的crud MySQL账户体系:根据账户所具有的 ... 
- ThreadLocal系列(三)-TransmittableThreadLocal的使用及原理解析
			ThreadLocal系列(三)-TransmittableThreadLocal的使用及原理解析 上一篇:ThreadLocal系列(二)-InheritableThreadLocal的使用及原理解 ... 
- Spring Boot Starters是什么?
			版权声明:该文转自: http://www.nosuchfield.com/2017/10/15/Spring-Boot-Starters/.版权归原创作者,在此对原作者的付出表示感谢! starte ... 
- php 使用 rabbitmq
			1,配置好rabbitmq 服务器 (参照 http://www.cnblogs.com/spicy/p/7017603.html)(我是linux) 2,新增了一个用户 并点击该用户 增加权限如下 
