java数字转换成汉字大写、数字转发票上的人民币大写

1.调用方法

NumToCN.number2CNMontrayUnit(zjJE);

2.转换类


import java.math.BigDecimal;public class NumToCN {/*** 汉语中数字大写*/private static final String[] CN_UPPER_NUMBER = { "零", "壹", "贰", "叁", "肆","伍", "陆", "柒", "捌", "玖" };/*** 汉语中货币单位大写,这样的设计类似于占位符*/private static final String[] CN_UPPER_MONETRAY_UNIT = { "分", "角", "元","拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "兆", "拾","佰", "仟" };/*** 特殊字符:整*/private static final String CN_FULL = "整";/*** 特殊字符:负*/private static final String CN_NEGATIVE = "负";/*** 金额的精度,默认值为2*/private static final int MONEY_PRECISION = 2;/*** 特殊字符:零元整*/private static final String CN_ZEOR_FULL = " 万 千 百 拾 元 角 分 " ;/*** 把输入的金额转换为汉语中人民币的大写** @param numberOfMoney* 输入的金额* @return 对应的汉语大写*/public static String number2CNMontrayUnit(BigDecimal numberOfMoney) {StringBuffer sb = new StringBuffer();// -1, 0, or 1 as the value of this BigDecimal is negative, zero, or// positive.int signum = numberOfMoney.signum();// 零元整的情况if (signum == 0) {return CN_ZEOR_FULL;}//这里会进行金额的四舍五入long number = numberOfMoney.movePointRight(MONEY_PRECISION).setScale(0, 4).abs().longValue();// 得到小数点后两位值long scale = number % 100;int numUnit = 0;int numIndex = 0;boolean getZero = false;// 判断最后两位数,一共有四中情况:00 = 0, 01 = 1, 10, 11if (!(scale > 0)) {numIndex = 2;number = number / 100;getZero = true;}if ((scale > 0) && (!(scale % 10 > 0))) {numIndex = 1;number = number / 10;getZero = true;}int zeroSize = 0;while (true) {if (number <= 0) {break;}// 每次获取到最后一个数numUnit = (int) (number % 10);if (numUnit > 0) {if ((numIndex == 9) && (zeroSize >= 3)) {sb.insert(0, " "+CN_UPPER_MONETRAY_UNIT[6]);}if ((numIndex == 13) && (zeroSize >= 3)) {sb.insert(0, " "+CN_UPPER_MONETRAY_UNIT[10]);}sb.insert(0, " "+CN_UPPER_MONETRAY_UNIT[numIndex]);sb.insert(0, " "+CN_UPPER_NUMBER[numUnit]);getZero = false;zeroSize = 0;} else {++zeroSize;if (!(getZero)) {sb.insert(0, " "+CN_UPPER_NUMBER[numUnit]);}if (numIndex == 2) {if (number > 0) {sb.insert(0, " "+CN_UPPER_MONETRAY_UNIT[numIndex]);}} else if (((numIndex - 2) % 4 == 0) && (number % 1000 > 0)) {sb.insert(0, " "+CN_UPPER_MONETRAY_UNIT[numIndex]);}getZero = true;}// 让number每次都去掉最后一个数number = number / 10;++numIndex;}// 如果signum == -1,则说明输入的数字为负数,就在最前面追加特殊字符:负if (signum == -1) {sb.insert(0, CN_NEGATIVE);}// 输入的数字小数点后两位为"00"的情况,则要在最后追加特殊字符:整if (!(scale > 0)) {sb.append(CN_FULL);}return sb.toString();}public static void main(String[] args) {double money = 2.20;BigDecimal numberOfMoney = new BigDecimal(money);String s = NumToCN.number2CNMontrayUnit(numberOfMoney);System.out.println("转换后的金额为:[" +s.toString()+"]");}}

java数字金额转换成汉字大写相关推荐

  1. 把数字金额转换成中文大写数字

    //把数字金额转换成中文大写数字 function changeNumMoneyToChinese(money) { var cnNums = new Array("零", &qu ...

  2. 把数字金额转换成人民币大写[原创]

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

  3. 如何把数字金额转换成中文大写

    问题:要求把万亿级别内的浮点数转换成中文大写,例如把数字1112221000060.254400转换成:壹万壹仟壹佰贰拾贰亿贰仟壹佰万零陆拾元零贰角伍分 分析:关键是先把double类型转换成char ...

  4. java实现数字金额转换成汉字大写金额

    我们经常在做项目的财务报表,需要打印发票等情况时需要用到小写的财务金额要转换成汉字的大写金额,下面就是实现该功能的代码 import java.lang.Math; /** *通用型金钱转换类 * * ...

  5. php数字转换百千万,PHP数字金额转换成中文大写显示

    整个功能其实不难,只是还算挺实用,所以记一下哈,其他编程语言转换一下也是能可以的! 思路:把传过来的金额转换成整数和小数两部分,再对其分别进行转换处理 代码附上: function moneyToSt ...

  6. php显示大写金额,PHP数字金额转换成中文大写显示

    整个功能其实不难,只是还算挺实用,所以记一下哈,其他编程语言转换一下也是能可以的! 思路:把传过来的金额转换成整数和小数两部分,再对其分别进行转换处理 代码附上: function moneyToSt ...

  7. php 把数字变成大写数字,PHP数字金额转换成中文大写显示

    整个功能其实不难,只是还算挺实用,所以记一下哈,其他编程语言转换一下也是能可以的! 思路:把传过来的金额转换成整数和小数两部分,再对其分别进行转换处理 代码附上: function moneyToSt ...

  8. android数字转汉字大写字母,将数字金额转成汉字大写的

    /** 数字金额大写转换(可以处理整数,小数,负数) */ function smalltoBIG(n) { var fraction = ['角', '分']; var digit = ['零', ...

  9. Java数字金额转化成汉字大写金额

    import java.math.BigDecimal;/*** Utils - 金额转为大写汉字*/ public final class NumberToCNUtils {/**汉语中数字大写*/ ...

最新文章

  1. Redis集群——利用Gearman在Lnmp架构中做MySQL的缓存服务器
  2. iPhone开源系列:iDev Recipes
  3. 疫情之下第一个倒闭航空公司:百年老店Avianca申请破产保护,国内民航也不乐观...
  4. 告警系统邮件引擎、运行告警系统
  5. c++:MFC _cstring.h库常用函数
  6. VTK修炼之道17:图像基本操作_图像信息的访问与修改(vtkImageData)
  7. Webtask后端即服务:无服务器快速教程
  8. STM32中的串口通信
  9. golang 格式“占位符”%d,%f,%s等应用类型
  10. jmeter录制 过滤_Jmeter录制pc脚本
  11. 简易中控紫猫插件版(2)基本思路介绍
  12. 微信扫描打开APP下载链接提示代码案例源码
  13. BZOJ4340 : BJOI2015 隐身术
  14. c语言什么意思 app 视频 新闻,开发新闻资讯APP需要哪些功能?
  15. 一文读懂Apache Kylin(麒麟)
  16. JOHNSON TROTTER 的全排列算法
  17. html如何制作悬浮窗,使用js实现悬浮窗效果方法
  18. 通用寄存器介绍和段寄存器的介绍
  19. 周鸿祎推动了中国互联网的进步
  20. 从输入 URL 到浏览器接收的过程中发生了什么事情?

热门文章

  1. Python爬虫5.3 — scrapy框架spider[Request和Response]模块的使用
  2. 计算机技术对特殊儿童的好处坏处,对特殊儿童的计算机技术教育探讨
  3. 装修医疗网站推广方案
  4. 斋藤康毅-深度学习入门 学习笔记一
  5. IP-guard上网行为管理解决方案
  6. 服务器网口配置文件,服务器4个网口如何配置文件
  7. 服务器只显示1个网口,服务器上多个个网口
  8. 全国低于30ms响应速度:千万级魅族用户的异地多点网络
  9. 云服务器DDOS攻击如何防御
  10. 基于51单片机的单相交流电压电流表仿真LTC1865 数码管显示