- 浏览: 734432 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
梦行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 341基于阿里提供的地理数据 http://datav.aliyun ... -
小知识点--解锁 AppChecker ping ip
2019-06-19 08:40 399在使用AppChecker 进行主动拨测的时候,目 ... -
记录年会小系统
2018-02-04 14:42 1122有点意思,年会过后,抽奖活动saas小系统扒光看看:支持P ... -
jdbc方式以 sys账号连接oracle数据的问题
2017-08-22 10:44 452多年以后,在操作oracle 时 发现 jdbc 连 ... -
proguard 代码混淆
2016-11-22 10:59 667url:http://proguard.sourceforg ... -
solr 表达式意义
2015-02-03 19:29 7451. “:”指定字段查指定值,如返回所有值*:* 2. “? ... -
solr 安装配置
2015-02-03 13:15 720solr 安装配置步骤: 1 首先下载solr(最新 ... -
javax.net.ssl.SSLKeyException: RSA premaster secre临时解决方案
2014-11-25 19:38 4369javax.net.ssl.SSLKeyException ... -
compass 小知识点
2014-09-15 10:22 906今天发现排序不管事, 查了一下:索引的问题:排序的列不进 ... -
java_opts 常用
2014-08-14 13:16 1167JVM设置,可以查考如下配置example:# Memory ... -
RPC Socket 服务调用模型
2014-04-09 16:14 576最近在看Dubbo 服务框架, 通过RPC 实现了输入和 ... -
JVM 基本参数
2014-04-03 11:49 761基本的JVM参数:-classpath, -cp: 设置类搜 ... -
eclipse 快捷键失效解决方法
2014-01-17 17:20 696有时候eclispe快捷键失效了,编码起来太难受了。 ... -
Compass+ lucene 通用代码(脱离数据库)
2013-11-08 15:09 867最近需要通过检索分类的方式进行处理,所以就写了接口与实 ... -
DEBUG远程tomcat
2013-08-21 13:35 972一、在windows系统中:打开%CATALINE_H ... -
自动获取网页内容,然后写入excel文档中
2013-07-05 15:22 3418今天需要将北京物业公司名称以及电话给整理出来,发现爱帮 ... -
继续学习jersey+spring 构建RESTful风格 webservice
2013-03-13 10:36 3421j先说一下springmvc rest风格 spring ... -
尽量少使用jaxb 进行xml与对象互换
2013-03-09 17:33 1305尽量少使用jaxb 进行xml与对象互换 问题不少,这个好 ... -
Cookie path的设置
2013-02-21 10:58 1915cookie path 设置 IE对如下的co ... -
http 相关知识点
2012-10-11 10:49 1024Host头域 Host头域指定请求资源的Intenet主机和 ...
相关推荐
用Delphi实现数字与汉字的转换源码
Java2Pas是命令行工具,可以将Java代码(.java)转换成Delphi代码(.pas文件)
Delphi数字大小写转换程序实例,并附有语音报号程序,实例在Delphi7.0下可顺利编译。主要是针对人民币的数字大小写转换,将阿拉伯数字转换成大写,具体定义:const mnUnit:WideString ='分角元'; const ...
Embarcadero官方下载文件,用于将Java代码转换成Object Pascal代码(Delphi代码),此工具为命令行工具。 目前Delphi XE7可以将jar包添加到android工程的library目录下,但需要将jar转换成.pas文件,然后添加到...
输入数字转换为人民币大写,Delphi源代码,代码里有个重要的转换单位,此单位共定义两个函数来实现数字金额的中文大写转化,此函数可支持12位整数。程序思路如下: 将小数点前的整数取出,算出整数长度,不足千亿时...
delphi32位程序转换成64位程序攻略.mht
人民币大小写转换,这是个delphi源代码..rar
把阿拉伯数字转为汉字写法比如123456789转化为零壹贰叁肆伍陆柒捌玖,以及几百几千几万的数字都可以转化
delphi源码 人民币 大写转换,将数字金额转为大写中文的金额
简便方法搞定第三方SDK的...EMB给出的方法是用Java2OP.exe工具,这是一个命令行程序,使用方法详见: http://docwiki.embarcadero.com/RADStudio/XE7/en/Java2OP.exe,_the_Native_Bridge_File_Generator_for_Android
(delphi)一个des的加密解密小程序,java写的des的一个类!希望对你有所帮助!
可以把delphi代码转换为C++代码,每次转换单个文件。 源代码中的中文,转换后在界面看是乱码,将转换后的代码保存文件后,中文恢复,不再是乱码
Delphi 人民币金额转换例程,类似程序比较多,本款代码是从一个Delphi书籍中整理出来的范例,在编写的过程中,对小数进行四舍五入,运行的效果可参见测试截图所示。 详细的代码请下载本完整实例查看吧。
上次忘记发源代码了,补上。 java与delphi通用DES加解密(源代码)
Delphi实现AES加密和解密, 同Java加解密兼容
Delphi 人民币大写转换及朗读工具(源代码,供大家学习)
我们在编程的过程中,特别是开发和财务相关的应用程序的时候
Delphi调用Java类源代码,本人测试一切OK的,大家可以参考一下。
delphi 将word 转换成txt
实现的delphi AES加解密与Java AES 加解密互转, delphi 7 下测试通过,这是一个delphi7下的例子程序.