`

将阿拉伯数字转换成人民币大写形式的JAVA工具类

阅读更多
将阿拉伯数字转换成人民币大写形式的JAVA工具类,只有一个静态函数,不用讲怎么用了吧。
文章链接地址:http://wallimn.iteye.com/admin/blogs/365769
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();
	}
}

/***********本人原创,欢迎转载,转载请保留本人信息*************/
作者:wallimn 电邮:wallimn@sohu.com 时间:2009-04-11
博客:http://wallimn.iteye.com
   http://blog.csdn.net/wallimn
网络硬盘:http://wallimn.ys168.com
/***********文章发表请与本人联系,作者保留所有权利*************/
7
0
分享到:
评论
4 楼 尹鹏波 2011-09-22  
谢谢lz了,lz辛苦了
3 楼 zhangskills 2010-02-07  
呵呵,我也写过一个类似的,可以支持long类型的转换
2 楼 wallimn 2010-01-30  
呵呵,我处理的数据没有那么大的。
1 楼 mpl398235717 2010-01-30  
你这个值不准,你测试一下2万亿 晕死

相关推荐

    java实现数字转换人民币中文大写工具

    Java 实现数字转换人民币中文大写工具是指使用 Java 语言将数字转换为人民币中文大写格式的工具。该工具具有很高的实用价值,特别是在人事业务系统开发中,经常需要将数字转换为大写,以便于报表打印和日常业务处理...

    中文数字转成阿拉伯数字 java 实现

    在Java编程语言中,将中文数字转换为阿拉伯数字是一个常见的需求,特别是在处理中文文本数据时。这个场景下,我们有一个名为“中文数字转成阿拉伯数字 java 实现”的压缩包,包含了一个实现此功能的Java包和一个单元...

    阿拉伯数字金额转换为大写数字金额

    在IT行业中,尤其是在财务软件开发或者银行系统设计中,经常需要将阿拉伯数字金额转换成大写数字金额,以便于核对、防止错误和提高安全性。这是因为大写数字在视觉上与阿拉伯数字有所区别,可以降低欺诈风险。本例子...

    将阿拉伯数字转换为金额的汉字大写

    总的来说,将阿拉伯数字转换为金额的汉字大写是Java在财务领域中的一项基础应用,它体现了编程语言处理日常业务问题的能力。通过理解并实现这样的功能,开发者不仅可以加深对Java编程的理解,也能更好地服务于财务...

    使用java将人民币金额转换成大写并使用自定义标签显示到页面

    本篇将介绍如何使用Java编程语言将人民币金额转换成大写,并且通过自定义标签库(Tag Library)在网页上显示。首先,我们来看`ChangeNumMoney.java`这个文件,它可能包含了实现金额转换的核心逻辑。 `...

    阿拉伯数字转换为中文小写数字

    在实际项目中,我们可能会将这样的功能封装到一个工具类中,并提供更多的方法来支持各种格式的数字转换。例如,可以添加一个处理负数的方法,或者一个处理带有单位(如元、角、分)的数字的方法。此外,考虑到本地化...

    java金额数字转中文工具类详解

    然后,我们实现一个方法`NumToChinese`,该方法是整个工具类的核心,用于将输入的金额数字转换为汉字表示。 `NumToChinese`方法首先会对输入的数字进行范围判断,如果数字超出了预设的范围,则会抛出异常。之后,...

    Android中数字转中文,金额转大写

    在Android开发中,有时我们需要将数字转换为中文或者将金额以大写的格式显示,这在财务应用或一些需要中文表示数字的场景中尤其常见。本文将深入探讨如何在Android环境中实现这一功能,包括数字转中文以及数字金额转...

    java数字转汉字工具类详解

    Java数字转汉字工具类是指将数字转换为汉语中人民币的大写的工具类。该工具类主要用于处理金额的转换,提供了一种将数字转换为汉语中人民币的大写的解决方案。 在Java数字转汉字工具类中,使用了两个数组:...

    金钱大写转小写数字类java(精确到角)

    在IT行业中,尤其是在财务软件开发或者处理金融数据时,经常需要进行金额的格式转换,将中文大写的金额转换成小写数字。这是因为中文大写数字在财务领域中使用广泛,可以防止数字篡改,增强账目的安全性。本节将详细...

    jsp页面人民币小写转大写

    在处理金融数据时,为了保证准确性和规范性,通常会将金额从小写的阿拉伯数字转换为大写的汉字数字,这在财务报表、发票等正式文档中尤其常见。在JSP(JavaServer Pages)页面中实现这个功能,我们可以利用Java编程...

    FDDA-instructionw-Ring.rar_ajax

    后端使用Java的JCodeModel库生成处理数字转换的代码,将阿拉伯数字转化为中文大写,如“一”、“二”、“三”等,这在财务或会计领域很常见,因为中文大写数字在防止篡改和增加安全性方面有其优势。 具体实现可能...

    java日常记录

    5. java将小写金额转换为大写的工具类 - zgrjkflmkyc的专栏 - 博客频道 - CSDN.NET.webarchive:同样是博客文章的归档,作者提供了自定义的Java工具类,用于将阿拉伯数字形式的小写金额转换为汉字大写。这个工具类...

    加解密,金额大写

    其次,金额大写转换在财务软件和银行系统中非常常见,它涉及到将阿拉伯数字转换为中文大写数字,以避免在处理大量金钱时的误解。在Java中,可以编写函数或者使用现有的库来实现这个功能。基本思路是定义一个映射表,...

    支票金额大写转换示例(金额大写转换器)

    通过这个工具类,我们可以方便地将支票金额的数字形式转换成中文大写,从而满足支票填写的要求。这个示例不仅提供了基本的转换功能,还考虑了数字前导和尾随零的处理,使得转换结果更加规范和安全。对于实际的业务...

    MoneyUtils.rar_发票

    在处理财务或者发票相关的程序时,将阿拉伯数字转换成中文大写是必不可少的步骤,因为中国的财务规范要求金额在发票上必须用中文大写表示,以防止篡改和提高准确性。"MoneyUtils.rar_发票"这个文件恰好提供了解决这...

    Java机试相关题目34题

    9. 金额转换问题:将阿拉伯数字形式的金额转换为中文大写金额,如“1011”转换为“一千零一拾一元整”。这通常需要根据中文数字的规则来设计转换逻辑。 10. Java通信编程与Socket:Java的Socket编程用于实现基于TCP...

    关于Java的Character类详解

    Java的Character类是Java语言中处理单个字符的类,它是位于`java.lang`包下的一个内置类。Character类提供了许多静态方法,用于处理字符的各种操作,如转换、比较、查找、验证等。在深入探讨Character类之前,我们...

    JAVA常用方法集合

    虽然这部分代码没有给出具体实现,但可以推测其功能是将阿拉伯数字形式的金额转换为中文大写形式。这在财务系统中非常常见,用于正式文档如发票、支票等。 #### 3. 日期转换为字符串 **方法描述**: 此方法接收一...

    招聘软件测试工程师用的试题

    设计思路可以是创建一个映射表,将阿拉伯数字对应到人民币大写的字符,然后遍历数字字符串进行转换。伪代码如下: ``` function arabic_to_chinese(num_str): mapping = {'0': '零', '1': '壹', '2': '贰', '3': ...

Global site tag (gtag.js) - Google Analytics