- public class MoneyUtil {
- 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();
- }
- }
注:上面的代码不是我自己写的,是在一篇博客中看到的,希望分享给大家。
相关推荐
将数字金额转成人民币大写,如1999.00,转为:壹仟玖佰玖拾玖元整;2000.00,转为:贰仟元整;2000.01,转为:贰仟元零壹分
人民币数字转换成汉字大写 android Java 运行效率
数字转换成人民币大写
这段代码是用于将数字转换为中文大写的人民币表示方式,主要应用于财务软件或者与货币相关的程序中,方便在中文环境中准确地表示金额。这个函数名为`GetChinaNum`,接收4个参数:`otherNum`、`isRMB`、`numOption`和...
在excel中输入数字转换成人民币大写,在excel中输入数字转换成人民币大写,在excel中输入数字转换成人民币大写
【Java实现将数字转换成人民币大写】的代码主要涉及了将数字转化为中文大写汉字的逻辑,这对于财务系统和报表生成来说是非常重要的功能。在Java中,这个过程可以通过自定义类来实现,例如创建一个名为`Rmb`的类。...
此资源是一个java类代码可以将数字转成人民币汉字的方法封装在一个class类中
本文将详细介绍如何使用 Java 实现人民币金额数字转换成大写的解决方案。 Java 中的 NumberFormat 类 在 Java 中,NumberFormat 类是用于格式化数字的类。它提供了多种格式化方式,例如整数、浮点数、货币等。...
在Excel中,将数字转换为人民币大写文字是一项常见的需求,尤其在财务报表或发票制作时更为重要。人民币大写的规范格式包括“壹”、“贰”等汉字,确保了金额的准确性和专业性。以下是一些关于如何在Excel中实现这一...
JS将数字转换为大写汉字人民币
java编写的 阿拉伯数字转换成相应的人民币汉字类
总的来说,将数字转化为人民币大写形式是Java编程中的一个实用技巧,涉及到数字与字符串的转换、位运算以及特殊规则的理解和应用。通过理解和实践这个过程,可以增强对Java字符串操作和逻辑处理的理解。
在编程领域,尤其是在开发财务软件或者处理金融数据时,经常需要将数字转换成人民币的大写形式,以便符合中国的会计规范和防止篡改。C#作为.NET框架中的主要编程语言,提供了丰富的字符串处理功能来实现这一需求。...
在IT领域,尤其是在编程实践中,将数字转换成大写人民币是一种常见的需求,特别是在财务软件或者银行系统的开发中。本文将详细讲解如何利用C#语言,结合微软的语音引擎SAPI.SpVoice来实现这一功能,并讨论如何调用...
NULL 博文链接:https://zhangshangfeng.iteye.com/blog/1599146
人民币数字转换成汉字,小数点后面保留两位数字,保存到分
人民币数字转换.