import java.math.BigDecimal;/*** Utils - 金额转为大写汉字*/
public final class NumberToCNUtils {/**汉语中数字大写*/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 = "零元" + CN_FULL;/*** 把输入的金额转换为汉语中人民币的大写* * @param numberOfMoney*            输入的金额* @return 对应的汉语大写*/public static String convert(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();}}

Java数字金额转化成汉字大写金额相关推荐

  1. 数字金额转化为汉字大写金额

    代码: function numberToChinese(number) {/*本方法:数字金额转化为汉字大写金额;*支持最大整数兆(万亿):*支持小数后四位(毫);*/var Chinese = [ ...

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

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

  3. java数字金额转换成汉字大写

    java数字转换成汉字大写.数字转发票上的人民币大写 1.调用方法 NumToCN.number2CNMontrayUnit(zjJE): 2.转换类 import java.math.BigDeci ...

  4. win7计算机名改成大写,图文解读win7系统excel数字小写金额转换成汉字大写金额的措施...

    有很多网友在使用电脑的过程总难免会遇到win7系统excel数字小写金额转换成汉字大写金额的情况.针对win7系统excel数字小写金额转换成汉字大写金额的问题,我给大家整理总结了详细的解决步骤.近日 ...

  5. 【C语言】小写数字金额转换成中文大写金额

    1. 更新说明 添加与 "零圆整" 等价的预先判断 (0 / 0. / 0.0 / 0.00 / . / .0 / .00) 修复了因使用函数 strdup 导致的内存泄漏 除去输 ...

  6. js 文字金额转换成汉字大写金额

    最近在写项目时 经常出现输入数字金额 转换为汉字大写金额的需求 今天用js 简单封装一个方法. 上代码: <!DOCTYPE html> <html lang="en&qu ...

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

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

  8. C#中将数字金额转成英文大写金额的函数

    <span style="white-space:pre"> </span>/// <summary>/// 数字转金额大写/// 调用示例:S ...

  9. 【简单易懂】Java字符串应用场景:数字金额转换成大写汉字金额【金额转换】

    Java字符串应用场景:数字金额转换成汉字金额 文章目录 Java字符串应用场景:数字金额转换成汉字金额 前言 一.String简单介绍 二.字符串在开发中的应用场景 三.金额转换 3.1解题思路 3 ...

最新文章

  1. 开发音频频谱_ToneBoosters音频效果器插件合集
  2. 解决WAMP搭建PHP环境后后局域网其他机器无法访问的问题
  3. 1046 Shortest Distance (20 分)【难度: 简单 / 知识点: 前缀和 / 破环成链】
  4. import 快捷键 自动调整顺序_一文搞定PPT中的快捷键
  5. @vue/cli启动异常:ENOENT: no such file or directory, scandir
  6. OpenCV钻石Diamond 标记的检测
  7. AngularJS学习之旅—AngularJS Http(九)
  8. VDP文件级恢复需要在用VDP备份的机器上浏览
  9. grails安装部署_grails中文版
  10. sky下载 star_star sky五军之战高清无损下载 star sky 高清mv下载
  11. 谷歌:早在这个0day 补丁发布前几周,朝鲜国家黑客就已利用
  12. distri.lua的web运维工具
  13. 最大流(Max Flow)
  14. 智能优化算法:共生生物搜索算法 - 附代码
  15. 联想服务器的主板型号怎么看,科技知识:联想主板型号怎么看
  16. 【AliOS Studio】AliOS Studio初体验
  17. ES6语法笔记(ES6~ES11)
  18. 认识Excel的第三天(字数满格自动换行、插入一行/列单元格、修改边框样式)
  19. 世界各国国家名和英文名-mysql数据库设计
  20. Java随笔——逻辑运算符和(|和||)之间的区别

热门文章

  1. latex中怎么在符号正上和正下方编写公式
  2. 【CF53E】 Dead Ends
  3. 13 excel vba 多个区域选择 union range
  4. 【官方博客】Android’s HTTP Clients
  5. 1-1000以内的完数
  6. Wish:wish禁止销售的产品有什么?
  7. mysql installer 下载_MySQL Installer
  8. 【读书笔记】《鬼谷子》——缓解焦虑改善人际妙用书
  9. 对vSphere虚拟交换机的理解
  10. Mac打开swf文件