- 浏览: 321142 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
-
July01:
最近了解到一款StratoIO打印控件,功能如下:1、Html ...
js调用excel、word打印 -
jyangzi5:
[u][/u]引用
常见hibernate面试题 -
wangv:
<code="java">Sy ...
常见hibernate面试题 -
bardo:
建议看看这一个
http://bardo.iteye.com ...
金额数字转中文大写 -
dotjar:
在继续讲解HQL其他更为强大的查询功能前,我们先来讲解以下利用 ...
常见hibernate面试题
金额数字转中文大写
处理能力:
整数部分:9999999999999999(16位长,仟万亿)
小数部分:3位,多于3位舍去(不做四舍五入)
运行结果:
1.23 壹元贰角叁分
1234567890123456.123 壹仟贰佰叁拾肆万伍仟陆佰柒拾捌亿玖仟零壹拾贰万叁仟肆佰伍拾陆元壹角贰分叁厘
0.0798 柒分玖厘
10,001,000.09 壹仟万零壹仟元玖分
01.107700 壹元壹角柒厘
处理能力:
整数部分:9999999999999999(16位长,仟万亿)
小数部分:3位,多于3位舍去(不做四舍五入)
运行结果:
1.23 壹元贰角叁分
1234567890123456.123 壹仟贰佰叁拾肆万伍仟陆佰柒拾捌亿玖仟零壹拾贰万叁仟肆佰伍拾陆元壹角贰分叁厘
0.0798 柒分玖厘
10,001,000.09 壹仟万零壹仟元玖分
01.107700 壹元壹角柒厘
public class MoneyUtil { /** 大写数字 */ private static final String[] NUMBERS = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; /** 整数部分的单位 */ private static final String[] IUNIT = { "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万", "拾", "佰", "仟" }; /** 小数部分的单位 */ private static final String[] DUNIT = { "角", "分", "厘" }; /** * 得到大写金额。 */ public static String toChinese(String str) { str = str.replaceAll(",", "");// 去掉"," String integerStr;// 整数部分数字 String decimalStr;// 小数部分数字 // 初始化:分离整数部分和小数部分 if (str.indexOf(".") > 0) { integerStr = str.substring(0, str.indexOf(".")); decimalStr = str.substring(str.indexOf(".") + 1); } else if (str.indexOf(".") == 0) { integerStr = ""; decimalStr = str.substring(1); } else { integerStr = str; decimalStr = ""; } // integerStr去掉首0,不必去掉decimalStr的尾0(超出部分舍去) if (!integerStr.equals("")) { integerStr = Long.toString(Long.parseLong(integerStr)); if (integerStr.equals("0")) { integerStr = ""; } } // overflow超出处理能力,直接返回 if (integerStr.length() > IUNIT.length) { System.out.println(str + ":超出处理能力"); return str; } int[] integers = toArray(integerStr);// 整数部分数字 boolean isMust5 = isMust5(integerStr);// 设置万单位 int[] decimals = toArray(decimalStr);// 小数部分数字 return getChineseInteger(integers, isMust5) + getChineseDecimal(decimals); } /** * 整数部分和小数部分转换为数组,从高位至低位 */ private static int[] toArray(String number) { int[] array = new int[number.length()]; for (int i = 0; i < number.length(); i++) { array[i] = Integer.parseInt(number.substring(i, i + 1)); } return array; } /** * 得到中文金额的整数部分。 */ private static String getChineseInteger(int[] integers, boolean isMust5) { StringBuffer chineseInteger = new StringBuffer(""); int length = integers.length; for (int i = 0; i < length; i++) { // 0出现在关键位置:1234(万)5678(亿)9012(万)3456(元) // 特殊情况:10(拾元、壹拾元、壹拾万元、拾万元) String key = ""; if (integers[i] == 0) { if ((length - i) == 13)// 万(亿)(必填) key = IUNIT[4]; else if ((length - i) == 9)// 亿(必填) key = IUNIT[8]; else if ((length - i) == 5 && isMust5)// 万(不必填) key = IUNIT[4]; else if ((length - i) == 1)// 元(必填) key = IUNIT[0]; // 0遇非0时补零,不包含最后一位 if ((length - i) > 1 && integers[i + 1] != 0) key += NUMBERS[0]; } chineseInteger.append(integers[i] == 0 ? key : (NUMBERS[integers[i]] + IUNIT[length - i - 1])); } return chineseInteger.toString(); } /** * 得到中文金额的小数部分。 */ private static String getChineseDecimal(int[] decimals) { StringBuffer chineseDecimal = new StringBuffer(""); for (int i = 0; i < decimals.length; i++) { // 舍去3位小数之后的 if (i == 3) break; chineseDecimal.append(decimals[i] == 0 ? "" : (NUMBERS[decimals[i]] + DUNIT[i])); } return chineseDecimal.toString(); } /** * 判断第5位数字的单位"万"是否应加。 */ private static boolean isMust5(String integerStr) { int length = integerStr.length(); if (length > 4) { String subInteger = ""; if (length > 8) { // 取得从低位数,第5到第8位的字串 subInteger = integerStr.substring(length - 8, length - 4); } else { subInteger = integerStr.substring(0, length - 4); } return Integer.parseInt(subInteger) > 0; } else { return false; } } public static void main(String[] args) { String number = "1.23"; System.out.println(number + " " + MoneyUtil.toChinese(number)); number = "1234567890123456.123"; System.out.println(number + " " + MoneyUtil.toChinese(number)); number = "0.0798"; System.out.println(number + " " + MoneyUtil.toChinese(number)); number = "10,001,000.09"; System.out.println(number + " " + MoneyUtil.toChinese(number)); number = "01.107700"; System.out.println(number + " " + MoneyUtil.toChinese(number)); } }
发表评论
-
JSP禁用缓存常用方法
2013-10-24 09:14 864JSP禁用缓存常用方法 jsp页面禁止缓存设置 1.客户端 ... -
Java操作excel的综合应用(jxl)
2011-04-19 10:28 2217根据excel模板生成excel报表文件--用于报表打印 j ... -
抽象工厂模式
2011-03-18 15:16 1023抽象工厂模式中的有以 ... -
单实例Singleton设计模式
2011-03-10 10:29 1145单实例Singleton设计模式 ... -
JAVA获取服务器路径
2010-09-28 20:36 3618获取服务器路径 在JSF环境中获取到ServletConte ... -
模拟随机发牌
2010-08-17 19:47 1364public void testinit(){ ... -
java web 标签.CHM
2010-08-17 19:26 917Struts2、Struts1、jstl、jsf、spring ... -
java反编译器
2010-08-11 17:38 1065java反编译器 -
获取指定路径下的所有文件
2010-07-23 16:24 1167package test; import java. ... -
已知最大值的高效排序算法
2010-06-10 10:54 1166有一组数据3,5,9,7,4,13,15,0,2,20.已知最 ... -
错误页面跳转解决办法
2010-06-09 15:50 1397错误页面跳转解决办法 在web.xml中配置错误页面跳转如下 ... -
web系统图标资源
2009-12-21 16:04 1332http://open-open.com/ajax/ajax2 ... -
Think in java3(中文完整版)
2009-12-17 23:09 1156Think in java3(中文完整版) -
用jar命令将Web应用打包成war文件的简单方法
2009-12-17 17:16 1341假定有一个Web应用:C:\myHome myHome/WE ... -
JAVA编程思想
2009-12-15 14:14 836JAVA编程思想 -
Java调用dll实现des加密解密
2009-12-10 16:42 3158package com.srcb.common; p ... -
Java开发--常用网站
2009-11-12 11:13 8791.jar查找: http://www.findjar.com ... -
指定目录输出日志(根据日期和操作员信息)
2009-11-09 14:24 1109package com.microjava.log; ... -
趣味题笔记
2009-10-29 19:29 999一个农夫养了一头牛, ... -
几种不同的算法实现小时候玩的扑克牌游戏
2009-08-04 16:04 1908记得小时候看到别人玩的一个游戏,给他一定个数有大小次序的 ...
相关推荐
Python将金额数字转中文大写,如:1234567890.12 =>壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾元壹角贰分。 实测比较常见的在线金额转大写的结果是一致的,比其他网友的要更准确,好多都没有处理整数中间部分零的情况。...
水晶报表数字金额转中文大写,用于水晶报表中将数字金额转换为中文大写的金额
这种方法可能更复杂,因为需要手动处理每一位数字,并确保大写的“零”、“壹”等汉字正确地与金额对应起来。 3. **人民币大写规则** - 零:零 - 一:壹 - 二:贰 - 三:叁 - 四:肆 - 五:伍 - 六:陆 - ...
在Oracle数据库环境中,有时我们需要将数字金额转换成汉字大写形式,这在财务报表或理财程序中尤为常见,因为汉字大写是财务领域的一种标准表示方式,可以避免因数字混淆而引发的错误。本篇文章将深入探讨如何在...
在 Java 中,将人民币金额数字转换成大写需要使用 HashMap 来存储中文数字和人民币金额的对应关系。例如,数字 1 对应中文数字 "壹",数字 2 对应中文数字 "贰",以此类推。 在 SimpleMoneyFormat 类中,我们首先...
在IT领域,尤其是在财务软件开发或数据处理中,经常需要将阿拉伯数字金额转换为中文大写,以便在财务报表、发票或合同中清晰准确地表示金额。这是因为中文大写数字在金融交易中能减少因书写错误导致的混淆,增强财务...
将数字金额转换为中文大写金额将数字金额转换为中文大写金额将数字金额转换为中文大写金额
将金额数字转化为大写,格式规范标准。① 当没有零头时自动加xxxx元整 ② 小数能够精确到角、分、厘 ③ 能够处理1亿一下金额数字 ④ 使用方法:numToBig(金额),返回大写字符串
本文将深入探讨如何在Android环境中实现这一功能,包括数字转中文以及数字金额转大写,并且会涉及到口语化的转换。 首先,数字转中文主要是将阿拉伯数字(如1、2、3等)转换成中文数字(如一、二、三等)。在Java或...
PHP模拟存款金额数字转中文大写 一、开发环境 1、环境搭建:Windows 8+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0 。 2、文本编辑器:Sublime Text3。 二、主要技术 本实验主要使用字符串的截取、替换将阿拉伯数字转化为...
金额阿拉伯数字转换中文大写(全:大到无量,小到清净).msi 唯一一款位数最大和小数最小的转换软件,并设有四舍五入和六入的功能. 透明的窗体可以透过看到后面发生的事,做了部分优化和调整. 另:...
Java 中实现数字金额到中文大写字符的转换 Java 中实现数字金额到中文大写字符的转换是指将阿拉伯数字转换成中文大写的过程。本文将详细介绍 Java 实现数字金额到中文大写字符的转换的知识点。 知识点一: 数字...
sqlserver数字转金额大写,输入数字返回汉字大写
MySQL函数 数字转中文 非金额 处理数据类型 decimal(21,6)
标题"数字转汉字大写"所指的就是这一技术应用,它主要涉及到字符串处理、条件判断以及数字与字符之间的映射关系。 在财务报表和发票中,为了清晰易读且安全,金额通常会用汉字大写来表示,例如“壹”代表1,“贰”...
本例中的代码展示了一个具体的实现过程,用于将货币类型的数值(小写金额)转换为汉字大写形式。 #### 实现原理与步骤 1. **初始化与预处理**:首先,定义一个函数`jezh(xxje:currency):String;`,接收一个货币...
1、该dll能将阿拉伯数字转换为汉字数字或者中文大写金额。例如1234567.07可转换为: “一百二十三万四千五百六十七点零七”或“壹佰贰拾叁万肆仟伍佰陆拾柒圆零柒分”。 目前支持正负千亿以内(整数部分不超过12位)...
金额小写转汉字大写的核心在于将阿拉伯数字(即小写数字)按照一定的规则转换为对应的汉字大写形式。具体步骤包括: 1. **定义数字与单位映射**:首先,需定义两个数组,一个用于存储0至9的汉字大写表示,另一个...
在人事业务系统中,日期也可以用汉字大写表示,以便于更好地表达日期信息。 Java 实现数字转换人民币中文大写工具的代码实例如下: ```java public class Data2Zh { final static private String NUMBER[] = { "零...
将数字转换为汉字大写数字。不支持负数。 输入(字符串):"10200004.02" 输出(字符串):"壹仟零贰拾萬零肆元零角贰分