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('零', '壹', '贰', '叁 ...
随机推荐
- Aircrack-ng无线破解总结
过年回来家,奈何没网,实属无奈,只好看破解教程,看能否破出来.于是总结如下 测试环境在linux平台下,我用的是ubuntu环境.ubuntu安装可以直接用sudo apt-get install a ...
- “全栈2019”Java异常第十八章:Exception详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- Java Web 学习与总结(一)Servlet基础
配置环境:https://www.cnblogs.com/qq965921539/p/9821374.html 简介: Servlet是Sun公司提供的一种实现动态网页的解决方案,在制定J2EE时引入 ...
- Python Socket 编程示例 Echo Server
简评:我们已经从「Python Socket 编程概览」了解了 socket API 的概述以及客户端和服务器的通信方式,接下来让我们创建第一个客户端和服务器,我们将从一个简单的实现开始,服务器将简单 ...
- C语言数据结构之二叉树的实现
本篇博文是博主在学习C语言算法与数据结构的一些应用代码实例,给出了以二叉链表的形式实现二叉树的相关操作.如创建,遍历(先序,中序后序遍历),求树的深度,树的叶子节点数,左右兄弟,父节点. 代码清单如下 ...
- leetcode-896-单调数列
题目描述: 如果数组是单调递增或单调递减的,那么它是单调的. 如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的. 如果对于所有 i <= j,A[i] ...
- 2016级算法期末上机-H.难题·AlvinZH's Fight with DDLs III
1119 AlvinZH's Fight with DDLs III 思路 难题,最小点覆盖. 分析题意,某一个任务,既可以在笔记本A的 \(a\) 模式下完成,也可以在笔记本B的 \(b\) 模式下 ...
- jersey annotations
参照: http://blog.csdn.net/a19881029/article/details/43056429 官网文档翻译版 @Path 用来为资源类或方法定义URI,当然除了静态URI也支 ...
- whdxlib
1 数据库系统实现 实 验 指 导 书 齐心 彭彬 计算机工程与软件实验中心 2016 年 3 月2目 录实验一.JDBC 应用程序设计(2 学时) ......................... ...
- Angular Material 按钮图标系列
工做中经常用到Angular Material 中的好多按钮素材,奈何官网经常上不去,所以只能自己把这些常用的按钮扒下来了,留给自己同时也留给大家方便查看. Angular material mat- ...