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. 把数字金额转换成人民币大写[原创]

    最近在用这个博客,感觉博客园不错,以前用的是新浪的,感觉这个更好,所以好多东西现在转到这边来了. 下面是一个数字转人民币大写的类,不啰嗦了,下面是代码:  1    /**/ /// <summ ...

  2. 大小端、字节顺序转换函数和IP地址格式转换函数

    大小端.字节顺序转换函数和IP地址格式转换函数 大小端 CPU大小端之分 常见字节序 字节顺序转换函数 Linux系统下定义 Windows系统下 ntohs() htons() htonl()和nt ...

  3. 关于数字转换成人民币大写的问题

    我们在参与大型项目时,难免会遇到数值转换人民币大写的情况.因为我今天接触了一个这样的转换,但原代码存在BUG,转换经常出现问题.于是我就去网上搜索了相关资源.由于没有找到相对权威的转换代码,网上给出的 ...

  4. 数字转换成人民币大写格式(带界面)

    今天看了算法的公开课,有一个把数字转换成人民币大写的算法. 后面就想着自己写一个界面的,好几天没有写一个完整的程序的. 当然有一些BUG,没有时间优化,后面在慢慢优化. 自己的名言:每天努力一点儿,总 ...

  5. 数值转换成人民币大写的一个类

    网上有许多将数值转换成人民币大写的代码,其中有不少写得很好的.昨天在Csdn上浏览,觉得这个比较简洁,但也有几点小Bug,稍加整理,觉得仍然与财务表达方式有不一致的地方,故先贴上来,请大家看看. pu ...

  6. 把阿拉伯数字翻译成中文大写数字

    package com.zcw.zcwbook.demo15;/*** @program: zcwbook* @description: 把阿拉伯数字翻译成中文大写数字* @author: zhaoc ...

  7. java 大小写转换函数_不使用Java中的任何库函数将大写转换为小写

    java 大小写转换函数 Given a string and we have to convert it from uppercase to lowercase. 给定一个字符串,我们必须将其从大写 ...

  8. java里的进制转换函数_基于Java中进制的转换函数详解

    十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinar ...

  9. JAVA浮点数转人民币读法_算法--java实现将数字转换成人民币大写(迅雷面试题)...

    public classRmb {/*** 人民币的基本信息和操作 * *@authorsoyoungboy *@version1.0*/ private double number; //人民币的数 ...

最新文章

  1. SQL Server 2005 18452登录错误 的解决方法
  2. 集群文件系统GlusterFS安装配置
  3. 苏宁大促高并发要求下的售后服务运营能力承诺服务系统架构实战\n
  4. 创建一个追踪摄像机(2)
  5. 参数依赖查找(ADL,Argument-dependent lookup)
  6. 电气研究生做计算机视觉,UCI研究生电气工程专业排名!师哥带你瞬间拿下
  7. oracle循环数据,oracle循环插入数据
  8. php操作redis实例大全
  9. 最受欢迎的Chrome插件Adblock屏蔽网页广告
  10. 【办公自动化】Excel“一键”生成国土“三调”转换代码
  11. 获取注册表键值并格式转换
  12. Android中使用Iconfont图标制作自己的矢量图库
  13. 计算机控制面板空白,win7控制面板打开是空白的怎么办-解决控制面板打开之后空白的方法 - 河东软件园...
  14. VC++将位图中保存的图像灰化(附源码)
  15. ybt1109 开关灯
  16. 2019暑期在校培训总结
  17. LaTeX入门学习(8)(术语)
  18. 智能眼镜是头戴式摄像机
  19. PAT_乙级_1003_筱筱
  20. 讯飞星火 VS 文心一言:谁是中文大语言模型的TOP1?

热门文章

  1. class path resource [applicationContext.xml] cannot be opened because it does not exis
  2. 【java】数组的定义以及初级运用精讲(起点闭关计划)
  3. 二十四进制 加法计数器 并用数码管显示
  4. icloud备份微信聊天记录怎么恢复
  5. SSM毕设项目游泳馆管理系统851a0(java+VUE+Mybatis+Maven+Mysql)
  6. 改进神经网络的学习方法(上)
  7. 由于无法验证发布者,Windows已经阻止此软件
  8. bmob php支付,个人开发者也能盈利!Bmob支付SDK使用实例
  9. 利用SOP激活沉默用户
  10. 新整理的开源Odoo13发布更新的部分功能模块信息