java金额转换函数_将阿拉伯数字转换成人民币大写形式的JAVA工具类
http://wallimn.iteye.com/admin/blogs/365769
public class MoneyUtil {
private final static String[] CN_Digits = { "零", "壹", "貳", "叁", "肆", "伍",
"陆", "柒", "捌", "玖", };
/**
* 将数字型货币转换为中文型货币
* 作者:wallimn 时间:2009-4-10 下午09:59:26
* 博客:http://blog.csdn.net/wallimn
* 参数:
*
* @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
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();
}
/**
* 将一组数字(不多于四个)转化成中文表示
* 作者:wallimn 时间:2009-4-11 下午07:41:25
* 博客:http://wallimn.iteye.com
* 参数:
*
* @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
踩
分享到:
2009-04-11 23:17
浏览 7672
分类:非技术
评论
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工具类相关推荐
- 把数字金额转换成人民币大写[原创]
最近在用这个博客,感觉博客园不错,以前用的是新浪的,感觉这个更好,所以好多东西现在转到这边来了. 下面是一个数字转人民币大写的类,不啰嗦了,下面是代码: 1 /**/ /// <summ ...
- 大小端、字节顺序转换函数和IP地址格式转换函数
大小端.字节顺序转换函数和IP地址格式转换函数 大小端 CPU大小端之分 常见字节序 字节顺序转换函数 Linux系统下定义 Windows系统下 ntohs() htons() htonl()和nt ...
- 关于数字转换成人民币大写的问题
我们在参与大型项目时,难免会遇到数值转换人民币大写的情况.因为我今天接触了一个这样的转换,但原代码存在BUG,转换经常出现问题.于是我就去网上搜索了相关资源.由于没有找到相对权威的转换代码,网上给出的 ...
- 数字转换成人民币大写格式(带界面)
今天看了算法的公开课,有一个把数字转换成人民币大写的算法. 后面就想着自己写一个界面的,好几天没有写一个完整的程序的. 当然有一些BUG,没有时间优化,后面在慢慢优化. 自己的名言:每天努力一点儿,总 ...
- 数值转换成人民币大写的一个类
网上有许多将数值转换成人民币大写的代码,其中有不少写得很好的.昨天在Csdn上浏览,觉得这个比较简洁,但也有几点小Bug,稍加整理,觉得仍然与财务表达方式有不一致的地方,故先贴上来,请大家看看. pu ...
- 把阿拉伯数字翻译成中文大写数字
package com.zcw.zcwbook.demo15;/*** @program: zcwbook* @description: 把阿拉伯数字翻译成中文大写数字* @author: zhaoc ...
- java 大小写转换函数_不使用Java中的任何库函数将大写转换为小写
java 大小写转换函数 Given a string and we have to convert it from uppercase to lowercase. 给定一个字符串,我们必须将其从大写 ...
- java里的进制转换函数_基于Java中进制的转换函数详解
十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinar ...
- JAVA浮点数转人民币读法_算法--java实现将数字转换成人民币大写(迅雷面试题)...
public classRmb {/*** 人民币的基本信息和操作 * *@authorsoyoungboy *@version1.0*/ private double number; //人民币的数 ...
最新文章
- SQL Server 2005 18452登录错误 的解决方法
- 集群文件系统GlusterFS安装配置
- 苏宁大促高并发要求下的售后服务运营能力承诺服务系统架构实战\n
- 创建一个追踪摄像机(2)
- 参数依赖查找(ADL,Argument-dependent lookup)
- 电气研究生做计算机视觉,UCI研究生电气工程专业排名!师哥带你瞬间拿下
- oracle循环数据,oracle循环插入数据
- php操作redis实例大全
- 最受欢迎的Chrome插件Adblock屏蔽网页广告
- 【办公自动化】Excel“一键”生成国土“三调”转换代码
- 获取注册表键值并格式转换
- Android中使用Iconfont图标制作自己的矢量图库
- 计算机控制面板空白,win7控制面板打开是空白的怎么办-解决控制面板打开之后空白的方法 - 河东软件园...
- VC++将位图中保存的图像灰化(附源码)
- ybt1109 开关灯
- 2019暑期在校培训总结
- LaTeX入门学习(8)(术语)
- 智能眼镜是头戴式摄像机
- PAT_乙级_1003_筱筱
- 讯飞星火 VS 文心一言:谁是中文大语言模型的TOP1?
热门文章
- class path resource [applicationContext.xml] cannot be opened because it does not exis
- 【java】数组的定义以及初级运用精讲(起点闭关计划)
- 二十四进制 加法计数器 并用数码管显示
- icloud备份微信聊天记录怎么恢复
- SSM毕设项目游泳馆管理系统851a0(java+VUE+Mybatis+Maven+Mysql)
- 改进神经网络的学习方法(上)
- 由于无法验证发布者,Windows已经阻止此软件
- bmob php支付,个人开发者也能盈利!Bmob支付SDK使用实例
- 利用SOP激活沉默用户
- 新整理的开源Odoo13发布更新的部分功能模块信息