`
fancy205
  • 浏览: 14229 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

人民币大写与阿拉伯数字相互转换工具类

 
阅读更多

      近来接触到人民币大写与阿拉伯数字相互转换的问题,贴上来保存

     package com.fancy.algorithm;

/**
 * 
 * @author fancy205
 * 2010-05-04
 */
public class MoneyUtil {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println(numToCN(10000000000L));
//		System.out.println(cnToNum("玖拾亿伍仟万零伍元"));
//		System.out.println(Integer.MAX_VALUE);
	}
	/**
	 * 阿拉伯数字转为人民币大写
	 * @param num 123456789
	 */
	protected static String numToCN(long momey){
		String[] unitArray = {"分", "角", "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟"};
		String[] numArray = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
		if (momey == 0) {
            return "零元整";
        }
		String str = Long.toString(momey*100);
		char[] arr = str.toCharArray();
		int len = arr.length;
		int zero = 0;
		StringBuffer targetNum = new StringBuffer();
		for(int i=0;i<arr.length;i++){
			String s = arr[i]+"";
			int num = Integer.parseInt(s);
			int unitNum = len-i-1;
			if(num==0){
				zero++;
                if (unitNum == 2 || unitNum == 6 || unitNum == 10)
                {
                    if (unitNum == 2 || zero < 4)
                    	targetNum.append(unitArray[unitNum]);
                    zero = 0;
                }
			}else{
				if (zero > 0)
                {
                    targetNum.append(numArray[0]);
                    zero = 0;
                }
				targetNum.append(numArray[num]);
				targetNum.append(unitArray[unitNum]);
			}
		}
		if(zero>0){
			targetNum.append("整");
		}
		return targetNum.toString();
	}
	/**
	 * 人民币大写转换成阿拉伯数字
	 * @param str 壹亿五千零二十万零五元
	 * @return
	 */
	
	protected static long cnToNum(String str){
		String numStr = "零壹贰叁肆伍陆柒捌玖";
		String unitStr = "分角圆拾佰仟万拾佰仟亿拾佰仟";
		char[] arr = str.toCharArray();
		long sum = 0l;
		int len = arr.length;
		int num = 0;
		int unit = 0;
		for(int i=0;i<len;i++){
			String key = arr[i]+"";
			int index = numStr.indexOf(key);
			if(index!=-1) {
				num = index;
			}else {
				unit = unitStr.indexOf(key);
				if(num!=0){
					if(unit==6 || unit==10 || unit==14){
						sum *=  Math.pow(10,unit-2);
					}else {
						if(unit<=2){
							sum +=num;
							num = 0;
						}else{
							sum += num * Math.pow(10,unit-2);
						}
					
					}
				}
			}
		}
		return sum;
	}
}
 
2
2
分享到:
评论
1 楼 fkpj_bit 2012-05-23  
代码有一处有问题:
if(unit==6 || unit==10 || unit==14){  
                        sum *=  Math.pow(10,unit-2);  
                    }

如果num对应的单位是万,亿,因为sum没有加上num,会把这个num给吞掉,同时,如果单纯按照unitStr方式查找中文对应的单位时,就此处代码应改为
if (unit == 6 || unit == 10) {
						//碰到万,或者亿
						sum += num;
						sum *= Math.pow(10, 4);
					}

相关推荐

    汉语数字串与阿拉伯数字串间转换小工具(C源码)

    本项目是关于"汉语数字串与阿拉伯数字串间转换小工具",它使用C语言编写,专注于字符串操作,能够实现两种数字表示形式的互换,并且支持汉语数字串的大小写转换。这个工具对于处理中文数字和阿拉伯数字之间的转换...

    将人民币转换为阿拉伯数字

    使用java编程实现将人民币大写转换为阿拉伯数字。本程序仅实现万元以下的人民币转换,输入数据必须以元结尾。

    阿拉伯数字转换为人民币大写

    总结起来,阿拉伯数字转换为人民币大写是财务信息化中的一个重要环节,涉及到数字与中文字符的对应规则,以及数字位数和单位的理解。掌握这一技能,可以帮助我们更好地处理财务数据,开发出符合中国财务规范的软件...

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

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

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

    "阿拉伯数字转换为中文大写" 阿拉伯数字转换为中文大写是将阿拉伯数字转换为中文大写数字的过程。在这个过程中,我们需要使用数组来存储中文大写数字和单位,然后通过遍历阿拉伯数字字符串,逐个将数字转换为中文...

    汉语大写数字转换成阿拉伯数字

    汉语大写数字转换成阿拉伯数字。支持如下转换 '一千二百二十一万九千三百五十七亿一千二百二十一万九千零五十七', '一千二百二十一', '一千零十', '一万零一百', '一千零十一', '一万零一百十一', '一千二百...

    金额阿拉伯数字转换中文大写(全)

    - `setup.exe`和`金额阿拉伯数字转换中文大写(全:大到无量,小到清净).msi`是常见的安装包文件。 - `setup.exe`可能是自解压程序,直接运行即可安装应用。 - `.msi`文件是Microsoft Installer格式,适用于...

    python程序设计 将阿拉伯数字转换为大写数字

    将阿拉伯数字转换为大写数字,主要解决小数点问题,

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

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

    人民币大写汉字转换工具

    将阿拉伯数字转换成大写人民币汉字 大写人民币

    人民币数字转换成汉字大写

    人民币数字转换成汉字大写 android Java 运行效率

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

    在Android开发过程中,有时我们需要将阿拉伯数字(1, 2, 3...)转换成中文小写数字(一,二,三...),特别是在涉及到文化习惯或者用户界面本地化的时候,如书籍页码显示。这个任务涉及到字符串处理和字符映射,下面...

    阿拉伯数字转换成英文大写

    阿拉伯数字转换成英文大写 阿拉伯数字转换成英文大写是 Excel 中的一种实用功能,它可以将阿拉伯数字转换成英文大写形式。在 Excel 中,我们可以使用 Visual Basic 编辑器来实现这个功能。 在 Excel 中,我们首先...

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

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

    阿拉伯数字转换成英文和大写

    标题 "阿拉伯数字转换成英文和大写" 描述的是一个使用 DELPHI 开发的程序,该程序能够将Excel表格中的阿拉伯数字转换为英文和大写的表示形式,特别适用于财务领域,可以保留小数点后两位。这个程序的实现涉及到了...

    九种人民币大写数字相互转换及新增人民币写法三种

    九种人民币大写数字相互转换及新增人民币写法三种

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

    环境:vs2005 C# 功能:阿拉伯数字转换为中文大写数字

    人民币由阿拉伯数字转为大写中文

    人民币由阿拉伯数字转为大写中文

    人民币金额小写转换大写工具

    总之,“人民币金额小写转换大写工具 1.0 绿色版”是一个实用且便捷的工具,对于处理人民币金额转换工作提供了极大的便利。它的存在简化了财务人员的工作流程,减少了人为错误,提升了业务处理的效率和准确性。

    会计阿拉伯数字转换中文大写

    1. **定义中文数字映射**:首先,我们需要创建一个字典或数组,存储阿拉伯数字与中文大写的对应关系。例如,键为1到9的数字,值分别为“壹”、“贰”、“叁”、“肆”、“伍”、“陆”、“柒”、“捌”、“玖”。 2...

Global site tag (gtag.js) - Google Analytics