import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
/**
* 中文数字格式化,将数字转换成中文大写形式,以及将中文大写形式转换成数字
* @title CNNumberFormat.java
* @author chouhua
* @date 2013-4-16
*/
public class CNNumberFormat {
/**
* 中文数字正写
*/
private static final char[] cnNumbers = { '零', '壹', '贰', '叁', '肆', '伍',
'陆', '柒', '捌', '玖' };
private static final char[] stdNumbers = { '0', '1', '2', '3', '4', '5',
'6', '7', '8', '9' };
/**
* 货币单位
*/
// 顺序不能变,否则下面的实现代码页需要同步修改
private static final char[] units = { '厘', '分', '角', '元', '拾', '佰',
'仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟' };
/**
* 是否输出货币单位元角分的完整格式,简单格式通常用于套打纸张上已印有货币单位的情形。
*/
private boolean fullFormat = true;
public CNNumberFormat() {
}
public CNNumberFormat(boolean fullFormat) {
this.fullFormat = fullFormat;
}
/**
* 取得大写形式的字符串
* @return 中文正写的数字字符串
*/
public String format(double d) {
NumberFormat nf = new DecimalFormat("#.###");
String original = String.valueOf(nf.format(d));
return this.transform(original);
}
public String format(long ln) {
return this.transform(String.valueOf(ln));
}
private String transform(String original) {
String integerPart = "";
String floatPart = "";
if (original.indexOf(".") > -1) {
int dotIndex = original.indexOf(".");
integerPart = original.substring(0, dotIndex);
floatPart = original.substring(dotIndex + 1);
}
else {
integerPart = original;
}
StringBuffer sb = new StringBuffer();
// 整数部分处理
for (int i = 0; i < integerPart.length(); i++) {
int number = Integer
.parseInt(String.valueOf(integerPart.charAt(i)));
sb.append(cnNumbers[number]);
if (fullFormat) {
sb.append(units[integerPart.length() + 2 - i]);
}
}
// 小数部分处理
if (floatPart.length() >= 1) {
for (int i = 0; i < floatPart.length(); i++) {
int number = Integer.parseInt(String.valueOf(floatPart
.charAt(i)));
sb.append(cnNumbers[number]);
if (fullFormat && i < 3) {
sb.append(units[2 - i]);
}
}
}
else if (fullFormat) {
sb.append('整');
}
return sb.toString();
}
/**
* 将中文大写数字字符串转换成对应的数字类型
* @param cnNumStr
* @return Java Number类型对象
*/
public Number parse(String cnNumStr) {
if (null == cnNumStr || "".equals(cnNumStr.trim())) {
return null;
}
cnNumStr = cnNumStr.replaceAll("整", "");
if (!cnNumStr.endsWith("元")) {
cnNumStr = cnNumStr.replaceAll("元", ".");
}
for (int i = 0; i < cnNumbers.length; i++) {
cnNumStr = cnNumStr.replace(cnNumbers[i], stdNumbers[i]);
}
for (int j = 0; j < units.length; j++) {
cnNumStr = cnNumStr.replaceAll(units[j] + "", "");
}
BigDecimal b = new BigDecimal(cnNumStr);
return b;
}
/**
* @param args
*/
public static void main(String[] args) {
CNNumberFormat cnFmt = new CNNumberFormat(true);
System.out.println(cnFmt.format(123456789.12345));
System.out.println(cnFmt.format(123456789));
System.out.println(cnFmt.format(.123456789));
System.out.println(cnFmt.format(0.1234));
System.out.println(cnFmt.format(1));
System.out.println(cnFmt.format(12));
System.out.println(cnFmt.format(123));
System.out.println(cnFmt.format(1234));
System.out.println(cnFmt.format(12345));
System.out.println(cnFmt.format(123456));
System.out.println(cnFmt.format(1234567));
System.out.println(cnFmt.format(12345678));
System.out.println(cnFmt.format(123456789));
System.out.println(cnFmt.parse("壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元壹角贰分叁厘"));
}
运行结果:
壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元壹角贰分叁厘
壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元整
零元壹角贰分叁厘
零元壹角贰分叁厘
壹元整
壹拾贰元整
壹佰贰拾叁元整
壹仟贰佰叁拾肆元整
壹万贰仟叁佰肆拾伍元整
壹拾贰万叁仟肆佰伍拾陆元整
壹佰贰拾叁万肆仟伍佰陆拾柒元整
壹仟贰佰叁拾肆万伍仟陆佰柒拾捌元整
壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元整
123456789.123
- 浏览: 833679 次
文章分类
- 全部博客 (365)
- java (124)
- spring mvc (21)
- spring (22)
- struts2 (6)
- jquery (27)
- javascript (24)
- mybatis/ibatis (8)
- hibernate (7)
- compass (11)
- lucene (26)
- flex (0)
- actionscript (0)
- webservice (8)
- rabbitMQ/Socket (15)
- jsp/freemaker (5)
- 数据库 (27)
- 应用服务器 (21)
- Hadoop (1)
- PowerDesigner (3)
- EJB (0)
- JPA (0)
- PHP (2)
- C# (0)
- .NET (0)
- html (2)
- xml (5)
- android (7)
- flume (1)
- zookeeper (0)
- 证书加密 (2)
- maven (1)
- redis (2)
- cas (11)
最新评论
-
zuxianghuang:
通过pom上传报错 Artifact upload faile ...
nexus上传了jar包.通过maven引用当前jar,不能取得jar的依赖 -
流年末年:
百度网盘的挂了吧???
SSO单点登录系列3:cas-server端配置认证方式实践(数据源+自定义java类认证) -
953434367:
UfgovDBUtil 是什么类
Java发HTTP POST请求(内容为xml格式) -
smilease:
帮大忙了,非常感谢
freemaker自动生成源代码 -
syd505:
十分感谢作者无私的分享,仔细阅读后很多地方得以解惑。
Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
发表评论
-
eclispe 实用插件大全
2016-03-31 10:17 783在一个项目的完整的生命周期中,其维护费用,往往是其开发费用的 ... -
单点登录 SSO Session
2016-03-14 16:56 4014单点登录在现在的 ... -
通用权限管理设计 之 数据库结构设计
2016-01-26 13:22 2910通用权限管理设计 之 ... -
分享一个基于ligerui的系统应用案例ligerRM V2(权限管理系统)(提供下载)
2016-01-26 13:22 1349分享一个基于ligerui的系统应用案例ligerRM V2 ... -
通用权限管理设计 之 数据权限
2016-01-26 13:20 683通用权限管理设计 之 数据权限 阅读目录 前 ... -
使用RSA进行信息加密解密的WebService示例
2015-12-28 10:30 818按:以下文字涉及RS ... -
防止网站恶意刷新
2015-10-22 10:55 663import java.io.IOExcept ... -
单点登录
2015-10-19 14:24 711Cas自定义登录页面Ajax实现 博客分类: ... -
session如何在http和https之间同步
2015-09-14 09:25 2212首先说下 http>https>http ... -
基于 Quartz 开发企业级任务调度应用
2015-08-17 11:17 774Quartz 是 OpenSy ... -
Java加密技术(十二)——*.PFX(*.p12)&个人信息交换文件
2015-08-17 11:17 844今天来点实际工 ... -
Java加密技术(十)——单向认证
2015-08-13 10:13 637在Java 加密技术(九)中,我们使 ... -
Java加密技术(九)——初探SSL
2015-08-13 10:12 799在Java加密技术(八)中,我们模拟 ... -
Java加密技术(八)——数字证书
2015-08-13 10:12 843本篇的主要内容为Java证书体系的实 ... -
Java加密技术(七)——非对称加密算法最高级ECC
2015-08-13 10:12 917ECC ECC-Elliptic Curv ... -
Java加密技术(六)——数字签名算法DSA
2015-08-13 10:11 1000接下来我们介绍DSA数字签名,非对称 ... -
Java加密技术(五)——非对称加密算法的由来DH
2015-08-12 16:13 823接下来我们 ... -
Java加密技术(四)——非对称加密算法RSA
2015-08-12 16:11 1039接下来我们介绍典型的非对称加密算法—— ... -
Java加密技术(三)——PBE算法
2015-08-12 16:10 894除了DES,我们还知道有DESede( ... -
Java加密技术(二)——对称加密算法DES&AES
2015-08-12 16:09 673接下来我们介绍对称加密算法,最常用的莫 ...
相关推荐
主要为大家详细介绍了java实现数字转换人民币中文大写工具,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
输入字符,通过正则验证是否为金额不超过万亿精确到小数点后两位,然后将数字转换为大写 包括后台java正则验证及前台js验证 请输入一个数字(精确到小数点后两位): fdsa54325.54 fdsa54325.54 false 请输入一个...
java钱币小写转换大写
这是一个把人民币数字转换成大写的java程序
人民币数字转换成汉字大写 android Java 运行效率
java 阿拉伯数字转化中文大写。包括小数点的操作。是转化的源代码。可以参考这修改出所需格式。
用java实现的将人民币从数字转换为大写
独立开发,实测可用, 将阿拉伯和中文数字组合的字符串转成阿拉伯数字的整型 包。例如: “八万三千20”就可以转成整型 803020 。解压后,引用包。调用方法 在UnitTest.java 中有
用java实现将阿拉伯数字转换为金额的汉字大写
java将字符串中数字转换为中文大写,在输出字符串java将字符串中数字转换为中文大写,在输出字符串java将字符串中数字转换为中文大写,在输出字符串java将字符串中数字转换为中文大写,在输出字符串java将字符串中数字...
用java代码 实现金额阿拉伯数字 转成 中文汉字大写形式
数字转换为大写(JAVA) 自动转换 小于5位整数和不大于2位小数
java将数字转换成大写字母java将数字转换成大写字母java将数字转换成大写字母java将数字转换成大写字母java将数字转换成大写字母
将数字转为中文金额的大写方式(Java版) 博文链接:https://lovinchan.iteye.com/blog/202768
JAVA实现阿拉伯数字金额转汉语大写
这段代码主要是解决一些在写EXCEL或者其他文件的时候,里面有金额或者其他的数字需要转换成大写
实现阿拉伯数字转化为大写汉字;eg:1200->壹仟贰佰元整
Java语言实现的,将数字金额转换为人民币大写金额的例子,没有对输入数字进行校验,小数点后只保留两位,支持千分符。最大金额范围为千亿。
最简单算法:将数字转换为符合使用习惯的大写金额 编写语言:java 输出结果: 1200.00 壹仟贰佰元 1200.10 壹仟贰佰元壹角 1234.05 壹仟贰佰叁拾肆元零伍分 1200.05 壹仟贰佰元零伍分 1004.05 壹仟零肆元零伍分 ...