- 浏览: 747339 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
梦行Monxin商城系统:
java网上商城与php网上商城比较 -
梦行Monxin商城系统:
java网上商城与php网上商城比较 -
任楚娴:
你好,请问html = nvl(html); 这句中的nvl( ...
java html串转换成文本串 -
u013246812:
,谢拉!
jQuery ui Dialog 讲解参数 -
大宝剑99:
...
前端优化
/**
*
*/
package com.mjp.core.rmb;
/**
* @author mojianpo
*
*/
public class RmbUtil {
/**
* 将数字转换为对应的大写字母列如:0--零
*
* @param num
* @return
*/
private static char tochina(int num) {
char result = '零';
switch (num) {
case 0:
result = '零';
break;
case 1:
result = '壹';
break;
case 2:
result = '贰';
break;
case 3:
result = '叁';
break;
case 4:
result = '肆';
break;
case 5:
result = '伍';
break;
case 6:
result = '陆';
break;
case 7:
result = '柒';
break;
case 8:
result = '捌';
break;
case 9:
result = '玖';
break;
}
return result;
}
/**
* 将数字转换成大写人民币,如果不是数字,则返回零,其中最大数值999999999999.99,无负数,只保留到分上
*/
public static String numToRMB(String str) {
String result = "";
if (str.charAt(0) == '-') {
str = str.substring(1);
}
if (!isNumber(str)) {
return "零";
}
char[] strtmp = new char[30];
double temp = Double.parseDouble(str);
if (str.substring(str.indexOf(".") + 1).trim().length() < 3) {
temp = temp + 0.001;
}
// System.out.println(temp);
if (temp > 1000000000000.1 || temp < 0.00) {
return "零";
}
long re = (long) (temp * 100);
// System.out.println(re);
String zheng = (re % 10 == 0 && re % 100 == 0) ? "整" : "";
strtmp[1] = '零';
strtmp[2] = '仟';
strtmp[3] = '零';
strtmp[4] = '佰';
strtmp[5] = '零';
strtmp[6] = '拾';
strtmp[7] = '零';
strtmp[8] = '亿';
strtmp[9] = '零';
strtmp[10] = '仟';
strtmp[11] = '零';
strtmp[12] = '佰';
strtmp[13] = '零';
strtmp[14] = '拾';
strtmp[15] = '零';
strtmp[16] = '万';
strtmp[17] = '零';
strtmp[18] = '仟';
strtmp[19] = '零';
strtmp[20] = '佰';
strtmp[21] = '零';
strtmp[22] = '拾';
strtmp[23] = '零';
strtmp[24] = '元';
strtmp[25] = '零';
strtmp[26] = '角';
strtmp[27] = '零';
strtmp[28] = '分';
strtmp[29] = '整';
int i;
for (i = 1; i < 15; i++) {
if ((re % 10) != 0) {
strtmp[29 - i * 2] = tochina((int) (re % 10));
}
re = (long) (re / 10);
if (re == 0) {
break;
}
}
i = 29 - i * 2;
boolean flag = false;// 标志零
while (i < 29) {
if (strtmp[i] == '零') {
i++;
flag = true;
if (strtmp[i] == '万' || strtmp[i] == '圆' || strtmp[i] == '亿') {
result = result + strtmp[i];
if (result.indexOf("亿万") > -1) {
result = result.replaceAll("亿万", "亿");
}
}
} else {
if (flag == true) {
flag = false;
result = result + "零";
}
result = result + strtmp[i];
i++;
result = result + strtmp[i];
}
i++;
}
result = result + zheng;
return result;
}
/**
* 判断字符串是否是数字,(可以有符号,也可有且最多只有一个点)
*/
private static boolean isNumber(String s) {
s = s.trim();
boolean pointfirsttime = true;
boolean haveDigit = false;
int i = 0;
if (s == null || s.length() < 1) {
return false;
}
if (s.charAt(0) == '-') {
i++;
}
while (i < s.length()) {
if (!Character.isDigit(s.charAt(i))) {
if ('.' == s.charAt(i) && pointfirsttime) {
pointfirsttime = false;
} else {
return false;
}
} else {
haveDigit = true;
}
i++;
}
if (!haveDigit) {
return false;
}
return true;
}
/**
* 将大写人民币转换成数字
*/
public static String rmbToNUM(String str) {
double temp1, temp2;
double result = 0;
for (int i = 0; i < str.length(); i++) {
temp1 = toNumber(str.charAt(i));
if (temp1 == 0) {
continue;
}
temp2 = toNumber(str.charAt(++i));
if (temp2 == 100000000) {
result = result * temp2;
} else if (temp2 == 10000) {
result = ((long) (result / 100000000)) * 100000000
+ (((long) result) % 100000000) * temp2;
}
result = result + temp1 * temp2;
}
return String.valueOf(result);
}
/**
* 将大写字母转换成对应的数字
*/
private static double toNumber(char c) {
double temp = 0;
switch (c) {
case '零':
temp = 0;
break;
case '壹':
temp = 1;
break;
case '贰':
temp = 2;
break;
case '叁':
temp = 3;
break;
case '肆':
temp = 4;
break;
case '伍':
temp = 5;
break;
case '陆':
temp = 6;
break;
case '柒':
temp = 7;
break;
case '捌':
temp = 8;
break;
case '玖':
temp = 9;
break;
case '拾':
temp = 10;
break;
case '佰':
temp = 100;
break;
case '仟':
temp = 1000;
break;
case '万':
temp = 10000;
break;
case '亿':
temp = 100000000;
break;
case '整':
temp = 0;
break;
case '元':
temp = 1;
break;
case '角':
temp = 0.1;
break;
case '分':
temp = 0.01;
break;
}
return temp;
}
/**
* 测试方法是否正确
*/
public static void main(String[] arg) {
String temp = "121.00";
System.out.println(temp);
String re = RmbUtil.numToRMB(temp);
System.out.println(re);
re = RmbUtil.rmbToNUM(re);
System.out.println(re);
double dd = Double.parseDouble(re);
System.out.println(dd);
}
}
*
*/
package com.mjp.core.rmb;
/**
* @author mojianpo
*
*/
public class RmbUtil {
/**
* 将数字转换为对应的大写字母列如:0--零
*
* @param num
* @return
*/
private static char tochina(int num) {
char result = '零';
switch (num) {
case 0:
result = '零';
break;
case 1:
result = '壹';
break;
case 2:
result = '贰';
break;
case 3:
result = '叁';
break;
case 4:
result = '肆';
break;
case 5:
result = '伍';
break;
case 6:
result = '陆';
break;
case 7:
result = '柒';
break;
case 8:
result = '捌';
break;
case 9:
result = '玖';
break;
}
return result;
}
/**
* 将数字转换成大写人民币,如果不是数字,则返回零,其中最大数值999999999999.99,无负数,只保留到分上
*/
public static String numToRMB(String str) {
String result = "";
if (str.charAt(0) == '-') {
str = str.substring(1);
}
if (!isNumber(str)) {
return "零";
}
char[] strtmp = new char[30];
double temp = Double.parseDouble(str);
if (str.substring(str.indexOf(".") + 1).trim().length() < 3) {
temp = temp + 0.001;
}
// System.out.println(temp);
if (temp > 1000000000000.1 || temp < 0.00) {
return "零";
}
long re = (long) (temp * 100);
// System.out.println(re);
String zheng = (re % 10 == 0 && re % 100 == 0) ? "整" : "";
strtmp[1] = '零';
strtmp[2] = '仟';
strtmp[3] = '零';
strtmp[4] = '佰';
strtmp[5] = '零';
strtmp[6] = '拾';
strtmp[7] = '零';
strtmp[8] = '亿';
strtmp[9] = '零';
strtmp[10] = '仟';
strtmp[11] = '零';
strtmp[12] = '佰';
strtmp[13] = '零';
strtmp[14] = '拾';
strtmp[15] = '零';
strtmp[16] = '万';
strtmp[17] = '零';
strtmp[18] = '仟';
strtmp[19] = '零';
strtmp[20] = '佰';
strtmp[21] = '零';
strtmp[22] = '拾';
strtmp[23] = '零';
strtmp[24] = '元';
strtmp[25] = '零';
strtmp[26] = '角';
strtmp[27] = '零';
strtmp[28] = '分';
strtmp[29] = '整';
int i;
for (i = 1; i < 15; i++) {
if ((re % 10) != 0) {
strtmp[29 - i * 2] = tochina((int) (re % 10));
}
re = (long) (re / 10);
if (re == 0) {
break;
}
}
i = 29 - i * 2;
boolean flag = false;// 标志零
while (i < 29) {
if (strtmp[i] == '零') {
i++;
flag = true;
if (strtmp[i] == '万' || strtmp[i] == '圆' || strtmp[i] == '亿') {
result = result + strtmp[i];
if (result.indexOf("亿万") > -1) {
result = result.replaceAll("亿万", "亿");
}
}
} else {
if (flag == true) {
flag = false;
result = result + "零";
}
result = result + strtmp[i];
i++;
result = result + strtmp[i];
}
i++;
}
result = result + zheng;
return result;
}
/**
* 判断字符串是否是数字,(可以有符号,也可有且最多只有一个点)
*/
private static boolean isNumber(String s) {
s = s.trim();
boolean pointfirsttime = true;
boolean haveDigit = false;
int i = 0;
if (s == null || s.length() < 1) {
return false;
}
if (s.charAt(0) == '-') {
i++;
}
while (i < s.length()) {
if (!Character.isDigit(s.charAt(i))) {
if ('.' == s.charAt(i) && pointfirsttime) {
pointfirsttime = false;
} else {
return false;
}
} else {
haveDigit = true;
}
i++;
}
if (!haveDigit) {
return false;
}
return true;
}
/**
* 将大写人民币转换成数字
*/
public static String rmbToNUM(String str) {
double temp1, temp2;
double result = 0;
for (int i = 0; i < str.length(); i++) {
temp1 = toNumber(str.charAt(i));
if (temp1 == 0) {
continue;
}
temp2 = toNumber(str.charAt(++i));
if (temp2 == 100000000) {
result = result * temp2;
} else if (temp2 == 10000) {
result = ((long) (result / 100000000)) * 100000000
+ (((long) result) % 100000000) * temp2;
}
result = result + temp1 * temp2;
}
return String.valueOf(result);
}
/**
* 将大写字母转换成对应的数字
*/
private static double toNumber(char c) {
double temp = 0;
switch (c) {
case '零':
temp = 0;
break;
case '壹':
temp = 1;
break;
case '贰':
temp = 2;
break;
case '叁':
temp = 3;
break;
case '肆':
temp = 4;
break;
case '伍':
temp = 5;
break;
case '陆':
temp = 6;
break;
case '柒':
temp = 7;
break;
case '捌':
temp = 8;
break;
case '玖':
temp = 9;
break;
case '拾':
temp = 10;
break;
case '佰':
temp = 100;
break;
case '仟':
temp = 1000;
break;
case '万':
temp = 10000;
break;
case '亿':
temp = 100000000;
break;
case '整':
temp = 0;
break;
case '元':
temp = 1;
break;
case '角':
temp = 0.1;
break;
case '分':
temp = 0.01;
break;
}
return temp;
}
/**
* 测试方法是否正确
*/
public static void main(String[] arg) {
String temp = "121.00";
System.out.println(temp);
String re = RmbUtil.numToRMB(temp);
System.out.println(re);
re = RmbUtil.rmbToNUM(re);
System.out.println(re);
double dd = Double.parseDouble(re);
System.out.println(dd);
}
}
发表评论
-
全国最新行政区划代码(Tree)json数据以及地理数据
2020-11-11 21:23 381基于阿里提供的地理数据 http://datav.aliyun ... -
小知识点--解锁 AppChecker ping ip
2019-06-19 08:40 442在使用AppChecker 进行主动拨测的时候,目 ... -
记录年会小系统
2018-02-04 14:42 1143有点意思,年会过后,抽奖活动saas小系统扒光看看:支持P ... -
jdbc方式以 sys账号连接oracle数据的问题
2017-08-22 10:44 484多年以后,在操作oracle 时 发现 jdbc 连 ... -
proguard 代码混淆
2016-11-22 10:59 691url:http://proguard.sourceforg ... -
solr 表达式意义
2015-02-03 19:29 7771. “:”指定字段查指定值,如返回所有值*:* 2. “? ... -
solr 安装配置
2015-02-03 13:15 745solr 安装配置步骤: 1 首先下载solr(最新 ... -
javax.net.ssl.SSLKeyException: RSA premaster secre临时解决方案
2014-11-25 19:38 4419javax.net.ssl.SSLKeyException ... -
compass 小知识点
2014-09-15 10:22 938今天发现排序不管事, 查了一下:索引的问题:排序的列不进 ... -
java_opts 常用
2014-08-14 13:16 1220JVM设置,可以查考如下配置example:# Memory ... -
RPC Socket 服务调用模型
2014-04-09 16:14 600最近在看Dubbo 服务框架, 通过RPC 实现了输入和 ... -
JVM 基本参数
2014-04-03 11:49 786基本的JVM参数:-classpath, -cp: 设置类搜 ... -
eclipse 快捷键失效解决方法
2014-01-17 17:20 721有时候eclispe快捷键失效了,编码起来太难受了。 ... -
Compass+ lucene 通用代码(脱离数据库)
2013-11-08 15:09 919最近需要通过检索分类的方式进行处理,所以就写了接口与实 ... -
DEBUG远程tomcat
2013-08-21 13:35 1001一、在windows系统中:打开%CATALINE_H ... -
自动获取网页内容,然后写入excel文档中
2013-07-05 15:22 3449今天需要将北京物业公司名称以及电话给整理出来,发现爱帮 ... -
继续学习jersey+spring 构建RESTful风格 webservice
2013-03-13 10:36 3461j先说一下springmvc rest风格 spring ... -
尽量少使用jaxb 进行xml与对象互换
2013-03-09 17:33 1354尽量少使用jaxb 进行xml与对象互换 问题不少,这个好 ... -
Cookie path的设置
2013-02-21 10:58 1951cookie path 设置 IE对如下的co ... -
http 相关知识点
2012-10-11 10:49 1062Host头域 Host头域指定请求资源的Intenet主机和 ...
相关推荐
Java2Pas是一款强大的命令行工具,专为程序员设计,它能有效地将Java源代码(.java文件)转换成Delphi的Pascal源代码(.pas文件)。这一转换过程对于那些希望将现有的Java项目迁移到Delphi平台或者在两个平台之间...
本篇文章将详细讲解如何利用Delphi实现数字与汉字的转换,这对于开发涉及中文字符处理的应用程序,如财务系统、报表软件等具有重要意义。 在数字与汉字转换中,我们通常涉及到的是数字到汉字的大写数字转换,这是...
delphi32位程序转换成64位程序攻略.mht
本主题涉及的是在Delphi中实现人民币大小写的转换功能。在金融和会计领域,正确地将数字金额转换为大写汉字是至关重要的,因为这有助于避免因数字输入错误而引发的财务纠纷。下面我们将深入探讨如何在Delphi中实现这...
了解Java性能调优技巧,如JVM参数调整、代码优化,以及使用Java的并发工具来提高程序效率。 总的来说,从Delphi转向Java涉及到语言特性的理解、代码结构的重构、库和API的替换,以及对新平台特性的掌握。这是一个...
Delphi数字大小写转换程序实例,并附有语音报号程序,实例在Delphi7.0下可顺利编译。主要是针对人民币的数字大小写转换,将阿拉伯数字转换成大写,具体定义:const mnUnit:WideString ='分角元'; const ...
标题中的“delphi-C语言到Delphi的转换器”指的是一个工具或程序,它能够帮助开发者将用C语言编写的代码转换成Delphi语言。在软件开发中,这样的转换可能出于多种原因,如项目迁移、利用Delphi的特定功能或者为了在...
标题中的“用Delphi写的一个DES的加密解密小程序,Java写的DES的一个类”表明了这个压缩包包含两个部分:一个是使用Delphi编程语言编写的用于执行DES(Data Encryption Standard)加密和解密的小程序,另一个是用Java...
Embarcadero官方下载文件,用于将Java代码转换成Object Pascal代码(Delphi代码),此工具为命令行工具。 目前Delphi XE7可以将jar包添加到android工程的library目录下,但需要将jar转换成.pas文件,然后添加到...
输入数字转换为人民币大写,Delphi源代码,代码里有个重要的转换单位,此单位共定义两个函数来实现数字金额的中文大写转化,此函数可支持12位整数。程序思路如下: 将小数点前的整数取出,算出整数长度,不足千亿时...
【Delphi jpg转换成pdf文件demo】是一个使用Delphi编程语言编写的示例程序,它演示了如何将JPEG图像文件转换为PDF文档。这个程序的核心是图像处理和PDF生成技术,对于那些想要在Delphi环境下处理图像并创建PDF文档的...
本资源"Delphi.rar_AES_AES加密_delphi AES加密_delphi 加解密_java delphi aes"提供的是在Delphi编程环境中实现AES加密和解密的示例代码,其目标是与Java平台上的加解密过程保持兼容。 首先,让我们深入了解一下...
标题中的"Delphi的简繁转换源程序"指的是使用Delphi编程语言编写的代码,用于实现汉字的简体到繁体的转换功能。在中文环境下,由于历史原因,简体字和繁体字并存,这使得在不同地区交流时可能会遇到文字显示问题。...
在IT行业中,尤其是在财务软件开发或者自动化报表系统中,经常需要将数字转换成中文大写的金额形式,以便符合中国的财务规范。"数字转换成金额大写"是一个常见的需求,特别是在Delphi这样的编程环境中。Delphi是一款...
7. **性能优化**:虽然JNI提供了强大的互操作性,但其开销可能比直接使用Java或Delphi代码高。因此,在设计系统时,应考虑调用频率和性能要求,尽可能减少跨语言调用。 8. **调试和测试**:由于涉及到多个语言和...
在本项目中,我们关注的是一个基于桌面的应用程序,它利用Java语言来实现RFID读卡功能,并通过JNI(Java Native Interface)调用了Delphi编写的DLL(动态链接库)。 Java JNI是Java平台提供的一种原生接口,允许...
本项目“Delphi 人民币大写转换及朗读工具”是一个实用的软件示例,它结合了财务计算与语音合成技术,为用户提供便捷的人民币金额转换服务。 一、人民币大写转换 在财务工作中,人民币金额通常需要以大写形式表示...
在提供的`delphi10以上真正能用的金额大小写转换源码.txt`文件中,我们可以期待找到实现上述功能的源代码。通过学习和理解这段代码,开发者不仅可以解决当前的问题,还能加深对Delphi语言特性和财务应用开发的理解。
把阿拉伯数字转为汉字写法比如123456789转化为零壹贰叁肆伍陆柒捌玖,以及几百几千几万的数字都可以转化