`
luckspring
  • 浏览: 3516 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

数字转金额中文大写

阅读更多
数字转金额中文大写
package org.ms;

import java.util.Stack;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Change {

	public Stack<String> stack;

	public Change() {
		stack = new Stack<String>();
	}
	
	public void pushToStack(Stack<String> stack, char c) {
		switch (c) {
			case '0':
				stack.push("零");
				break;
			case '1':
				stack.push("壹");
				break;
			case '2':
				stack.push("贰");
				break;
			case '3':
				stack.push("叁");
				break;
			case '4':
				stack.push("肆");
				break;
			case '5':
				stack.push("伍");
				break;
			case '6':
				stack.push("陆");
				break;
			case '7':
				stack.push("柒");
				break;
			case '8':
				stack.push("捌");
				break;
			case '9':
				stack.push("玖");
				break;
		}
	}
	
	// 算位
	public void pushToStack_(Stack<String> stack, String s) {
		int digit1 = 5;
		int digit2 = 9;
		int digit3 = 1;
		
		for (int i = s.length() - 1, j = 0, k = 0; i >= 0; i--) {
			char c = s.charAt(i);
			j++;
			k++;
			if (k == 2) {
				stack.push("拾");
			} 
			else if (k == 3) {
				stack.push("佰");
			} 
			else if (k == 4) {
				stack.push("仟");
				k = 0;
			}
			
			if (j == digit1) {
				stack.push("万");
				digit1 += 8;
			}
			if (j == digit2) {
				stack.push("亿");
				digit2 += 8;
			}
			if (j == digit3 && c == '0') {
				digit3 += 4;
				continue;
			}
			else
				pushToStack(stack, c);
		}
		
	}
	
	// 处理
	public String popToString(Stack<String> stack) {
		String s = "";
		StringBuffer buffer = new StringBuffer();
		
		while (stack.empty() == false) {
			buffer.append((String) stack.pop());
		}
		
		s = buffer.toString();
		s = s.replaceAll("零仟", "零");
		s = s.replaceAll("零佰", "零");
		s = s.replaceAll("零拾", "零");
		s = s.replaceAll("[零]+", "零");
		s = s.replaceAll("零万", "万");
		s = s.replaceAll("零亿", "亿");
		s = s.replace("零角", "");
		s = s.replace("零分", "");
		s = s.replace("零厘", "");
		
		return s;
	}

	/******************* 阿 拉 伯 数 字 转 中 文 金 额 大 写 *******************/
	public String ArabToChinese(String str) {
		
		// 验证
		boolean flag = false;
		Pattern pat= Pattern.compile("^[^0][0-9]+(.[0-9]{1,3})$");
		Matcher matcher = pat.matcher(str);
		flag = matcher.find();
		
		if(flag){
			
			String s = "";
			
			int index = str.indexOf('.');

			if (index != -1) {
				s = str.substring(index + 1);
				str = str.substring(0, index);

				this.pushToStack_(this.stack, str);
				str = this.popToString(this.stack) + "圆";
				
				if (s.length() == 1) {
					s = s + "00";
				}
				if (s.length() == 2) {
					s = s + "0";
				}
				
				for (int i = 2, j = 0; i >= 0; i--) {
					
					char c = s.charAt(i);
					
					switch (j) {
						case 0:
							this.stack.push("厘");
							break;
						case 1:
							this.stack.push("分");				
							break;
						case 2:
							this.stack.push("角");
							break;
	
						default:
							break;
					}

					this.pushToStack(this.stack, c);
					
					j++;
					
				}
				
				s = this.popToString(this.stack);

				str = str + s;
				
			} else {
				this.pushToStack_(this.stack, str);
				str = this.popToString(this.stack) + "圆";
				str = str.replace("零圆", "圆");
			}
		}
		else{
			System.out.println("金额写法不正确");
		}
		
		return str;
	}

}

分享到:
评论
1 楼 bardo 2011-04-17  
建议看看这一个

http://bardo.iteye.com/blog/983559

相关推荐

    oracle 数字金额转为汉字大写

    在Oracle数据库环境中,有时我们需要将数字金额转换成汉字大写形式,这在财务报表或理财程序中尤为常见,因为汉字大写是财务领域的一种标准表示方式,可以避免因数字混淆而引发的错误。本篇文章将深入探讨如何在...

    水晶报表数字金额转中文大写

    水晶报表数字金额转中文大写,用于水晶报表中将数字金额转换为中文大写的金额

    SQL数字转金额大写函数

    sqlserver数字转金额大写,输入数字返回汉字大写

    数字转换成金额大写

    总的来说,数字转中文大写金额在Delphi中是一个实用的功能,需要对Delphi语言有良好的掌握,同时也需要熟悉财务领域的规则。通过学习和实践,不仅可以提升编程技巧,还能加深对财务规范的理解。

    将数字金额转换为中文大写金额

    将数字金额转换为中文大写金额将数字金额转换为中文大写金额将数字金额转换为中文大写金额

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

    本文将深入探讨如何在Android环境中实现这一功能,包括数字转中文以及数字金额转大写,并且会涉及到口语化的转换。 首先,数字转中文主要是将阿拉伯数字(如1、2、3等)转换成中文数字(如一、二、三等)。在Java或...

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

    在人事业务系统中,日期也可以用汉字大写表示,以便于更好地表达日期信息。 Java 实现数字转换人民币中文大写工具的代码实例如下: ```java public class Data2Zh { final static private String NUMBER[] = { "零...

    mysql 函数,可以将数字转换为中文大写形式

    mysql 函数,可以将数字转换为中文大写形式。大写数字是中国特有的数字书写方式,利用与数字同音的汉字取代数字,以防止数目被涂改。 据考证,大写数字最早是由武则天发明,后经朱元璋改进完善。

    C#数字转换为汉字大写数字—财务用

    将数字转换为汉字大写数字。不支持负数。 输入(字符串):"10200004.02" 输出(字符串):"壹仟零贰拾萬零肆元零角贰分

    mysql函数,将数字金额转成人民币大写

    在MySQL数据库中,有时我们需要将数字金额转换成人民币的大写形式,这在财务报表或会计系统中非常常见。为了实现这一需求,我们可以自定义一个函数或者利用现有的字符串处理函数。以下是一个关于如何在MySQL中实现这...

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

    1、该dll能将阿拉伯数字转换为汉字数字或者中文大写金额。例如1234567.07可转换为: “一百二十三万四千五百六十七点零七”或“壹佰贰拾叁万肆仟伍佰陆拾柒圆零柒分”。 目前支持正负千亿以内(整数部分不超过12位)...

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

    在IT领域,尤其是在财务软件开发或数据处理中,经常需要将阿拉伯数字金额转换为中文大写,以便在财务报表、发票或合同中清晰准确地表示金额。这是因为中文大写数字在金融交易中能减少因书写错误导致的混淆,增强财务...

    js实现将数字转换为中文大写

    总结来说,通过上述代码段,我们能够将普通的阿拉伯数字金额转换成符合中国财务规范的中文大写表示。这种转换在实际的财务软件、网上支付系统以及电子票务系统中非常有用。掌握这样的转换逻辑,对于希望在财务相关的...

    java将数字转换成大写字母

    Java 中实现数字金额到中文大写字符的转换 Java 中实现数字金额到中文大写字符的转换是指将阿拉伯数字转换成中文大写的过程。本文将详细介绍 Java 实现数字金额到中文大写字符的转换的知识点。 知识点一: 数字...

    FastReport小写金额转大写

    在财务文档或正式报告中,将数字金额转换成大写格式是一种常见的规范要求,尤其在中国。FastReport提供了一种方法,通过编写自定义函数来实现这一转换。本例中的代码展示了一个具体的实现过程,用于将货币类型的数值...

    将数字转为中文金额的大写方式(Java版)

    将数字转为中文金额的大写方式(Java版) 博文链接:https://lovinchan.iteye.com/blog/202768

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

    当我们涉及到金融交易或者会计记录时,金额通常需要以汉字大写的形式表示,以避免数字篡改和提高准确性。本文将深入探讨如何使用Java来实现阿拉伯数字到金额汉字大写的转换。 首先,我们需要了解金额汉字大写的基本...

    python金额数字转大写代码

    将金额数字转化为大写,格式规范标准。① 当没有零头时自动加xxxx元整 ② 小数能够精确到角、分、厘 ③ 能够处理1亿一下金额数字 ④ 使用方法:numToBig(金额),返回大写字符串

    数字转汉字大写

    标题"数字转汉字大写"所指的就是这一技术应用,它主要涉及到字符串处理、条件判断以及数字与字符之间的映射关系。 在财务报表和发票中,为了清晰易读且安全,金额通常会用汉字大写来表示,例如“壹”代表1,“贰”...

    数字金钱转换成中文大写

    在日常的财务、会计工作中,数字金额的书写通常要求使用中文大写,以避免数字书写错误导致的误解或欺诈。中文大写的数字形式是正式文件和财务报表的标准格式,能够提高金额表述的清晰度和安全性。本文将详细介绍如何...

Global site tag (gtag.js) - Google Analytics