- 浏览: 37849 次
- 性别:
- 来自: 重庆
最新评论
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 1997但是,如果双向关联都设置成fetch = FetchType. ... -
得到本机的ip地址
2011-06-25 13:12 1149public static String getL ... -
怎么获得Map<String,Date>中 String或Date类型
2011-06-16 09:28 4771有一个要求就是获得范型中类型;想了很多招都不能实现。 但有框架 ... -
javascript检验xml是否正确
2011-01-04 20:07 1041<script type="text/java ... -
图片防止盗链 转转kaka100
2011-01-03 16:11 648转。。转。。 -
新发现----享元模式
2011-01-02 23:54 718java1.5新知识: public class A { ... -
得到汉字的拼音
2011-01-02 15:17 933package cn.java; public class ... -
设置图片等比例缩小
2011-01-02 15:04 792//----------------------------- ... -
网页中一些特殊字符的转换,如[image]
2011-01-02 14:51 983package com.email.util; public ... -
BigDecimal 的学习
2010-12-31 00:23 725package com.util; import java. ... -
单例模式 转转转
2010-12-30 19:49 751单例模式的七种写法 文章分类:Java编程 转载请注明出处: ... -
文件压缩
2010-12-30 13:17 661package com.email.util; import ... -
Cookie的一些操作
2010-12-30 13:15 672package com.email.util; import ... -
servlet处理参数的一些操作
2010-12-30 13:09 603import javax.servlet.http.HttpS ... -
字符串与时间格式的相互操作
2010-12-30 13:06 830import java.text.ParseException ... -
文件的相关操作 转转转
2010-12-30 13:02 752package com.Utils; import java ... -
oracle 连接... 修改.....查询
2010-12-30 12:49 604package com.Utils; import java. ... -
tools----java---->mail
2010-12-20 20:28 589package cn.java; import java.u ... -
工具类-------字符串转成时间格式
2010-12-20 20:14 651package cn.java; import java.t ... -
处理中文乱码(新,比较万能)(encodeURI)
2010-12-19 01:04 1131$.ajax({ type:"GET ...
相关推荐
《MATLAB人民币识别系统》是基于MATLAB开发的一款软件应用,其主要目的是通过图像处理和机器学习技术,实现对人民币的自动识别。MATLAB作为一款强大的科学计算与数据分析工具,被广泛应用于各种工程和科研领域,包括...
本文实例为大家分享了python实现人民币大写转换的具体代码,供大家参考,具体内容如下 #!/usr/bin/python # -*- coding:utf-8 -*- # ********* 转换方法介绍 ********* # 将需要转换的数字从右向左,每4位分成一个...
这篇文档是针对人民币计算的学习教案,适合初学者或者小学生进行人民币基本运算的训练。教案包含了各种人民币单位的转换和加减运算,以下是其中涉及的知识点: 1. **人民币单位及其转换**: - 1元等于10角,1角...
1. 人民币的基本单位:人民币的单位有元、角、分。这是人民币的三个基本面额。 2. 常见的人民币面额:对于元的面额,有1元、2元、5元、10元、20元、50元和100元。对于角的面额,有1角、2角和5角。 3. 面值关系:1...
人民币是中国的法定货币,对于一年级的孩子来说,理解人民币的基本换算和使用是非常重要的数学基础知识。在这些练习题中,主要涉及了以下几个知识点: 1. **人民币的单位**:人民币的单位包括元、角和分。元是最大...
跨境业务人民币结算收款说明是针对企业或个人在进行跨国交易时,如何以人民币作为支付和结算货币的一系列操作和规定。这种结算方式不仅能够降低汇率波动的风险,还能减少兑换成本,近年来随着中国经济的增长和人民币...
这篇文档是针对小学一年级学生的一份数学考试卷,主要知识点集中在对人民币的认识和基本运算上。以下是这份试卷涉及的关键知识: 1. **人民币单位及换算**:人民币的基本单位是元,元下面是角,角下面是分。1元等于...
本文主要讲述了如何使用JSP页面调用Applet实现人民币的大小写转换。该实现方法通过在JSP页面中嵌入一个Applet,使用JavaScript与Applet进行交互,实现实时的人民币大小写转换。 一、JSP页面调用Applet的实现 在JSP...
人教版一年级数学下册第五单元《认识人民币》练习题 本练习题主要是为了帮助一年级学生认识人民币的单位、换算关系和基本计算能力。通过本练习题,学生可以熟悉人民币的基本单位元、角、分,理解他们之间的换算关系...
这是近期完成的一个小项目:主题是:人工智能_深度学习_PyTorch数据读取实战(以RMB人民币二分类为例)【含详细源代码+数据集+图示分析】。资源是十分详细的,并且我已经在博客中记录,详见近期发表的文章:{《...
使用java实现对人民币大写处理,亲测可用!
【人民币教材解读】 这篇文档是关于小学数学教材中人民币知识的教学解读,主要针对一年级下学期的学生。人民币作为中国的法定货币,在日常生活中扮演着至关重要的角色。教学内容旨在帮助孩子们理解和运用人民币,...
"人民币换算题详解" 本资源系根据一年级人民币换算题的文件信息,总共涵盖了人民币的换算、换算题、计算题和综合题等多个方面的知识点。 一、人民币换算 人民币的单位有元、角、分。1 元=10 角,1 角=10 分。...
【国家金融与发展实验室】日元汇率有望触底回升 人民币汇率将逐渐企稳——2024Q2人民币汇率.pdf【国家金融与发展实验室】日元汇率有望触底回升 人民币汇率将逐渐企稳——2024Q2人民币汇率.pdf【国家金融与发展实验室...
二年级人民币换算练习题 二年级人民币换算练习题.doc是一份人民币换算练习题的文档,旨在帮助学生熟悉人民币的单位和换算规则。该文档包括人民币换算的基本概念、单位换算、金额计算等多方面的知识点。 人民币换算...
《2021年人民币国际化报告》深入剖析了人民币国际化进程及其背后的商业机遇。人民币国际化,即人民币在国际经济交易中的使用程度不断提高,这既是中国经济实力增长的自然结果,也是政策推动的重要体现。报告指出,...
《认识人民币》是针对儿童和初学者设计的一堂理财基础知识课程,主要目的是帮助他们了解和熟悉人民币的基本面额,以及如何进行简单的货币计算。在这个PPT中,学习者将掌握以下核心知识点: 1. **人民币的基本单位**...
2016年10月1日,在国际货币基金组织的批准下,人民币正式加入特别提款权货币篮子,这不仅认可了人民币的国际地位,也为世界经济的发展注入了新的活力。 特别提款权利率是特别提款权估值和定价的重要组成部分。 基于...
《认识人民币—认识小面值人民币》这节课是针对一年级学生的数学教学内容,主要目的是让学生了解和掌握我国货币的基本知识,特别是小面值的人民币,包括元、角、分的概念及其相互关系。以下是对课程内容的详细阐述:...
【课题七:认识人民币】 本课题旨在帮助一年级的学生掌握人民币的基本知识,包括识别不同面值的人民币、理解人民币的单位以及其在现实生活中的应用。通过实际情境的引入,如逛商场购物,激发学生的学习兴趣,强调...