- 浏览: 38125 次
- 性别:
- 来自: 重庆
最新评论
package com.util;
public class RMB {
private final static String[] CN_Digits = { "零", "壹", "貳", "叁", "肆", "伍",
"陆", "柒", "捌", "玖", };
/**
* 将数字型货币转换为中文型货币 <br/> 作者:wallimn 时间:2009-4-10 下午09:59:26<br/>
* 博客:http://blog.csdn.net/wallimn<br/> 参数:<br/>
*
* @param moneyValue
* 字符串形式的金额,小数部分,将多于3位部分舍去,不做四舍五入
* @return
*/
public static String CNValueOf(String moneyValue) {
// 使用正则表达式,去除前面的零及数字中的逗号
String value = moneyValue.replaceFirst("^0+", "");
value = value.replaceAll(",", "");
// 分割小数部分与整数部分
int dot_pos = value.indexOf('.');
String int_value;
String fraction_value;
if (dot_pos == -1) {
int_value = value;
fraction_value = "00";
} else {
int_value = value.substring(0, dot_pos);
fraction_value = value.substring(dot_pos + 1, value.length())
+ "00".substring(0, 2);// 也加两个0,便于后面统一处理
}
int len = int_value.length();
if (len > 16)
return "值过大";
StringBuffer cn_currency = new StringBuffer();
String[] CN_Carry = new String[] { "", "万", "亿", "万" };
// 数字分组处理,计数组数
int cnt = len / 4 + (len % 4 == 0 ? 0 : 1);
// 左边第一组的长度
int partLen = len - (cnt - 1) * 4;
String partValue = null;
boolean bZero = false;// 有过零
String curCN = null;
for (int i = 0; i < cnt; i++) {
partValue = int_value.substring(0, partLen);
int_value = int_value.substring(partLen);
curCN = Part2CN(partValue, i != 0 && !"零".equals(curCN));
// System.out.println(partValue+":"+curCN);
// 若上次为零,这次不为零,则加入零
if (bZero && !"零".equals(curCN)) {
cn_currency.append("零");
bZero = false;
}
if ("零".equals(curCN))
bZero = true;
// 若数字不是零,加入中文数字及单位
if (!"零".equals(curCN)) {
cn_currency.append(curCN);
cn_currency.append(CN_Carry[cnt - 1 - i]);
}
// 除最左边一组长度不定外,其它长度都为4
partLen = 4;
partValue = null;
}
cn_currency.append("元");
// 处理小数部分
int fv1 = Integer.parseInt(fraction_value.substring(0, 1));
int fv2 = Integer.parseInt(fraction_value.substring(1, 2));
if (fv1 + fv2 == 0) {
cn_currency.append("整");
} else {
cn_currency.append(CN_Digits[fv1]).append("角");
cn_currency.append(CN_Digits[fv2]).append("分");
}
return cn_currency.toString();
}
/**
* 将一组数字(不多于四个)转化成中文表示 <br/> 作者:wallimn 时间:2009-4-11 下午07:41:25<br/>
* 博客:http://wallimn.iteye.com<br/> 参数:<br/>
*
* @param partValue
* 字符串形式的数字
* @param bInsertZero
* 是否在前面添加零
* @return
*/
private static String Part2CN(String partValue, boolean bInsertZero) {
// 使用正则表达式,去除前面的0
partValue = partValue.replaceFirst("^0+", "");
int len = partValue.length();
if (len == 0)
return "零";
StringBuffer sbResult = new StringBuffer();
int digit;
String[] CN_Carry = new String[] { "", "拾", "佰", "仟" };
for (int i = 0; i < len; i++) {
digit = Integer.parseInt(partValue.substring(i, i + 1));
if (digit != 0) {
sbResult.append(CN_Digits[digit]);
sbResult.append(CN_Carry[len - 1 - i]);
} else {
// 若不是最后一位,且下不位不为零,追加零
if (i != len - 1
&& Integer.parseInt(partValue.substring(i + 1, i + 2)) != 0)
sbResult.append("零");
}
}
if (bInsertZero && len != 4)
sbResult.insert(0, "零");
return sbResult.toString();
}
// public static void main(String[] args){
// System.out.println(CNValueOf("1090"));
// }
}
public class RMB {
private final static String[] CN_Digits = { "零", "壹", "貳", "叁", "肆", "伍",
"陆", "柒", "捌", "玖", };
/**
* 将数字型货币转换为中文型货币 <br/> 作者:wallimn 时间:2009-4-10 下午09:59:26<br/>
* 博客:http://blog.csdn.net/wallimn<br/> 参数:<br/>
*
* @param moneyValue
* 字符串形式的金额,小数部分,将多于3位部分舍去,不做四舍五入
* @return
*/
public static String CNValueOf(String moneyValue) {
// 使用正则表达式,去除前面的零及数字中的逗号
String value = moneyValue.replaceFirst("^0+", "");
value = value.replaceAll(",", "");
// 分割小数部分与整数部分
int dot_pos = value.indexOf('.');
String int_value;
String fraction_value;
if (dot_pos == -1) {
int_value = value;
fraction_value = "00";
} else {
int_value = value.substring(0, dot_pos);
fraction_value = value.substring(dot_pos + 1, value.length())
+ "00".substring(0, 2);// 也加两个0,便于后面统一处理
}
int len = int_value.length();
if (len > 16)
return "值过大";
StringBuffer cn_currency = new StringBuffer();
String[] CN_Carry = new String[] { "", "万", "亿", "万" };
// 数字分组处理,计数组数
int cnt = len / 4 + (len % 4 == 0 ? 0 : 1);
// 左边第一组的长度
int partLen = len - (cnt - 1) * 4;
String partValue = null;
boolean bZero = false;// 有过零
String curCN = null;
for (int i = 0; i < cnt; i++) {
partValue = int_value.substring(0, partLen);
int_value = int_value.substring(partLen);
curCN = Part2CN(partValue, i != 0 && !"零".equals(curCN));
// System.out.println(partValue+":"+curCN);
// 若上次为零,这次不为零,则加入零
if (bZero && !"零".equals(curCN)) {
cn_currency.append("零");
bZero = false;
}
if ("零".equals(curCN))
bZero = true;
// 若数字不是零,加入中文数字及单位
if (!"零".equals(curCN)) {
cn_currency.append(curCN);
cn_currency.append(CN_Carry[cnt - 1 - i]);
}
// 除最左边一组长度不定外,其它长度都为4
partLen = 4;
partValue = null;
}
cn_currency.append("元");
// 处理小数部分
int fv1 = Integer.parseInt(fraction_value.substring(0, 1));
int fv2 = Integer.parseInt(fraction_value.substring(1, 2));
if (fv1 + fv2 == 0) {
cn_currency.append("整");
} else {
cn_currency.append(CN_Digits[fv1]).append("角");
cn_currency.append(CN_Digits[fv2]).append("分");
}
return cn_currency.toString();
}
/**
* 将一组数字(不多于四个)转化成中文表示 <br/> 作者:wallimn 时间:2009-4-11 下午07:41:25<br/>
* 博客:http://wallimn.iteye.com<br/> 参数:<br/>
*
* @param partValue
* 字符串形式的数字
* @param bInsertZero
* 是否在前面添加零
* @return
*/
private static String Part2CN(String partValue, boolean bInsertZero) {
// 使用正则表达式,去除前面的0
partValue = partValue.replaceFirst("^0+", "");
int len = partValue.length();
if (len == 0)
return "零";
StringBuffer sbResult = new StringBuffer();
int digit;
String[] CN_Carry = new String[] { "", "拾", "佰", "仟" };
for (int i = 0; i < len; i++) {
digit = Integer.parseInt(partValue.substring(i, i + 1));
if (digit != 0) {
sbResult.append(CN_Digits[digit]);
sbResult.append(CN_Carry[len - 1 - i]);
} else {
// 若不是最后一位,且下不位不为零,追加零
if (i != len - 1
&& Integer.parseInt(partValue.substring(i + 1, i + 2)) != 0)
sbResult.append("零");
}
}
if (bInsertZero && len != 4)
sbResult.insert(0, "零");
return sbResult.toString();
}
// public static void main(String[] args){
// System.out.println(CNValueOf("1090"));
// }
}
发表评论
-
对象的字段以键值对的形式返回
2011-10-11 21:22 2003但是,如果双向关联都设置成fetch = FetchType. ... -
得到本机的ip地址
2011-06-25 13:12 1159public static String getL ... -
怎么获得Map<String,Date>中 String或Date类型
2011-06-16 09:28 4781有一个要求就是获得范型中类型;想了很多招都不能实现。 但有框架 ... -
javascript检验xml是否正确
2011-01-04 20:07 1048<script type="text/java ... -
图片防止盗链 转转kaka100
2011-01-03 16:11 664转。。转。。 -
新发现----享元模式
2011-01-02 23:54 722java1.5新知识: public class A { ... -
得到汉字的拼音
2011-01-02 15:17 940package cn.java; public class ... -
设置图片等比例缩小
2011-01-02 15:04 797//----------------------------- ... -
网页中一些特殊字符的转换,如[image]
2011-01-02 14:51 1010package com.email.util; public ... -
BigDecimal 的学习
2010-12-31 00:23 732package com.util; import java. ... -
单例模式 转转转
2010-12-30 19:49 757单例模式的七种写法 文章分类:Java编程 转载请注明出处: ... -
文件压缩
2010-12-30 13:17 669package com.email.util; import ... -
Cookie的一些操作
2010-12-30 13:15 682package com.email.util; import ... -
servlet处理参数的一些操作
2010-12-30 13:09 612import javax.servlet.http.HttpS ... -
字符串与时间格式的相互操作
2010-12-30 13:06 834import java.text.ParseException ... -
文件的相关操作 转转转
2010-12-30 13:02 757package com.Utils; import java ... -
oracle 连接... 修改.....查询
2010-12-30 12:49 609package com.Utils; import java. ... -
tools----java---->mail
2010-12-20 20:28 597package cn.java; import java.u ... -
工具类-------字符串转成时间格式
2010-12-20 20:14 658package cn.java; import java.t ... -
处理中文乱码(新,比较万能)(encodeURI)
2010-12-19 01:04 1138$.ajax({ type:"GET ...
相关推荐
《MATLAB人民币识别系统》是基于MATLAB开发的一款软件应用,其主要目的是通过图像处理和机器学习技术,实现对人民币的自动识别。MATLAB作为一款强大的科学计算与数据分析工具,被广泛应用于各种工程和科研领域,包括...
本文实例为大家分享了python实现人民币大写转换的具体代码,供大家参考,具体内容如下 #!/usr/bin/python # -*- coding:utf-8 -*- # ********* 转换方法介绍 ********* # 将需要转换的数字从右向左,每4位分成一个...
这篇文档是针对人民币计算的学习教案,适合初学者或者小学生进行人民币基本运算的训练。教案包含了各种人民币单位的转换和加减运算,以下是其中涉及的知识点: 1. **人民币单位及其转换**: - 1元等于10角,1角...
对于一年级学生来说,人民币的换算不仅是一个基础的数学知识点,也是孩子们认识货币、了解金钱价值的一个重要环节。通过对人民币单位的理解和运用,孩子们可以逐渐形成对货币的基本认知,并且在日常生活中学会如何...
这篇文档是针对小学一年级学生的一份数学考试卷,主要知识点集中在对人民币的认识和基本运算上。以下是这份试卷涉及的关键知识: 1. **人民币单位及换算**:人民币的基本单位是元,元下面是角,角下面是分。1元等于...
本文主要讲述了如何使用JSP页面调用Applet实现人民币的大小写转换。该实现方法通过在JSP页面中嵌入一个Applet,使用JavaScript与Applet进行交互,实现实时的人民币大小写转换。 一、JSP页面调用Applet的实现 在JSP...
对于一年级的小学生来说,学习《认识人民币》不仅能够帮助他们了解货币的基本知识,还能够培养他们的实际应用能力。人教版一年级数学下册第五单元的练习题设计正是为了帮助学生认识和掌握人民币的基本单位、换算关系...
这是近期完成的一个小项目:主题是:人工智能_深度学习_PyTorch数据读取实战(以RMB人民币二分类为例)【含详细源代码+数据集+图示分析】。资源是十分详细的,并且我已经在博客中记录,详见近期发表的文章:{《...
使用java实现对人民币大写处理,亲测可用!
"人民币换算题详解" 本资源系根据一年级人民币换算题的文件信息,总共涵盖了人民币的换算、换算题、计算题和综合题等多个方面的知识点。 一、人民币换算 人民币的单位有元、角、分。1 元=10 角,1 角=10 分。...
人民币作为中国的法定货币,在中国的经济发展和日常生活中具有举足轻重的地位。对于小学生来说,学习和理解人民币的相关知识不仅是数学学习的需要,更是一种社会生活技能的培养。因此,小学数学教材中人民币知识的...
【国家金融与发展实验室】日元汇率有望触底回升 人民币汇率将逐渐企稳——2024Q2人民币汇率.pdf【国家金融与发展实验室】日元汇率有望触底回升 人民币汇率将逐渐企稳——2024Q2人民币汇率.pdf【国家金融与发展实验室...
《2021年人民币国际化报告》深入剖析了人民币国际化进程及其背后的商业机遇。人民币国际化,即人民币在国际经济交易中的使用程度不断提高,这既是中国经济实力增长的自然结果,也是政策推动的重要体现。报告指出,...
2016年10月1日,在国际货币基金组织的批准下,人民币正式加入特别提款权货币篮子,这不仅认可了人民币的国际地位,也为世界经济的发展注入了新的活力。 特别提款权利率是特别提款权估值和定价的重要组成部分。 基于...
《认识人民币—认识小面值人民币》这节课是针对一年级学生的数学教学内容,主要目的是让学生了解和掌握我国货币的基本知识,特别是小面值的人民币,包括元、角、分的概念及其相互关系。以下是对课程内容的详细阐述:...
人民币是我们日常生活中不可或缺的货币单位,对于二年级的小学生来说,理解和掌握人民币单位之间的换算关系对于培养数学思维和解决实际问题能力至关重要。本文将详细阐述人民币的单位换算、基本概念以及换算练习题的...
人民币兑美元汇率的java工具类,人民币兑美元汇率的java工具类人民币兑美元汇率的java工具类
在许多应用中,我们可能需要显示带有特定格式的货币符号,例如人民币的"¥"符号。有时,我们希望这个符号下方显示两道杠,以符合标准的人民币符号样式。本文将详细解释如何在TextView中实现这一效果。 首先,我们要...
java 人民币大小写转换 利用BufferString和正则表达式做的。。。不到70行的代码,注释相当的详细,当然也写了一个C版本的,要的话,可以留下Email
随着经济的快速发展和社会的全面进步,对于孩子们来说,了解和认识人民币变得尤为重要。课题七《认识人民币》便是专门为一年级学生设计的,旨在通过系统的教学活动,帮助他们掌握人民币的基础知识,理解其在日常生活...