本工具类主要实现数字double1000.00====>>零万壹仟零佰零拾零元零角零分,注释很详细,就不多做介绍了

        /*** 不考虑分隔符的正确性*/private static final Pattern AMOUNT_PATTERN = Pattern.compile("^(0|[1-9]\\d{0,11})\\.(\\d\\d)$");private static final char[] RMB_NUMS = "零壹贰叁肆伍陆柒捌玖".toCharArray();private static final String[] UNITS = {"元", "角", "分"};private static final String[] U1 = {"", "拾", "佰", "仟"};private static final String[] U2 = {"", "万", "亿"};/*** 将金额(整数部分等于或少于12位,小数部分2位)转换为中文大写形式.** @param money 金额数字* @return 中文大写*/public static String convert(Double money) {money = Math.abs(money);if (Double.valueOf(0).equals(money)) {return "零元";}String amount = moneyFormat(money);// 去掉分隔符amount = amount.replace(",", "");// 验证金额正确性Matcher matcher = AMOUNT_PATTERN.matcher(amount);if (!matcher.find()) {}// 整数部分String integer = matcher.group(1);int i=Integer.valueOf(integer);// 小数部分String fraction = matcher.group(2);String result = "";result += integer2rmb(integer) + UNITS[0];// 小数部分result += fraction2rmb(fraction);return result;}/*** 将金额小数部分转换为中文大写*/private static String fraction2rmb(String fraction) {// 角char jiao = fraction.charAt(0);// 分char fen = fraction.charAt(1);return (RMB_NUMS[jiao - '0'] + (jiao >= '0' ? UNITS[1] : "")) + (fen >= '0' ? RMB_NUMS[fen - '0'] + UNITS[2] : "");}/*** 将金额整数部分转换为中文大写** @param integer* @return*/private static String integer2rmb(String integer) {String integer1=integer;StringBuilder buffer = new StringBuilder();// 从个位数开始转换,因我所用收据单最多到万字段,所以最长长度为5if (integer.length()<2&&integer.length()>0){integer1="0"+"0"+"0"+"0"+integer;}else if (integer.length()<3&&integer.length()>1){integer1="0"+"0"+"0"+integer;}else if (integer.length()<4&&integer.length()>2){integer1="0"+"0"+integer;}else if (integer.length()<5&&integer.length()>3){integer1="0"+integer;}int i, j;for (i =integer1.length()-1, j = 0; i >= 0; i--, j++) {char n = integer1.charAt(i);if (n==48){//此处是万位为0,执行下列操作// 插入[万]或者[亿]buffer.append(U2[j / 4]);// 插入[拾]、[佰]或[仟]buffer.append(U1[j % 4]);}else {// 插入[万]或者[亿]buffer.append(U2[j / 4]);// 插入[拾]、[佰]或[仟]buffer.append(U1[j % 4]);}buffer.append(RMB_NUMS[n - '0']);}return buffer.reverse().toString();}/*** 对金额的格式调整到分** @param preMoney* @return*/public static String moneyFormat(Double preMoney) {//23->23.00String money = preMoney.toString();StringBuffer sb = new StringBuffer();if (money == null) {return "0.00";}int index = money.indexOf(".");if (index == -1) {return money + ".00";} else {//整数部分String s0 = money.substring(0, index);//小数部分String s1 = money.substring(index + 1);if (s1.length() == 1) {//小数点后一位s1 = s1 + "0";} else if (s1.length() > 2) {//如果超过3位小数,截取2位就可以了s1 = s1.substring(0, 2);}sb.append(s0);sb.append(".");sb.append(s1);}return sb.toString();}

下图是测试情况

结果:

该工具类借鉴了csdn用户君子志邦的【JAVA工具类】金额与汉字大小写的转换 金额转换,在其原有功能之上做出了部分调整,若有问题,请联系本人删除,谢谢理解

以下是原文出处:

https://blog.csdn.net/u011488009/article/details/89966655

java 数字大小写转换工具类--适用于打印收据相关推荐

  1. Java 数字转汉字工具类

    Java 数字转汉字工具类 一.工具类--NumberToCnUtil package com.example.demotest.util;import java.util.Arrays; impor ...

  2. 金额大小写转换工具类

    /***金额大小写转换工具类*/public class MoneyUtil {/** 大写数字 */private static final String[] NUMBERS = { "零 ...

  3. 分享万能java字符串编码转换工具类

    代码下载地址:http://www.zuidaima.com/share/1795356301560832.htm 原文:分享万能java字符串编码转换工具类 package com.zuidaima ...

  4. Java 字体颜色转换工具类 ColorUtil

    import java.awt.Color;  import jxl.format.Colour;       /**  *字体颜色转换工具类  * @author tanghui  *  */ pu ...

  5. java大小端转换工具类

    最近的项目频繁涉及大小端转换的情况,参考github(https://github.com/Frank-Wiebeler/java-Big2LittleEndian/blob/master/src/c ...

  6. Java 进制转换工具类

    /*** 进制转换工具类* @author dell**/ public class HexadecimalUtil {/*** 获得倒序二进制数据* @param hexString* @retur ...

  7. Java 数字数组随机数工具类 NumberUtils、ArrayUtils、RandomUtils用法

    一.NumberUtils工具类 org.apache.commons.lang3.math.NumberUtils /1.NumberUtils.isNumber():判断字符串是否是数字/ Num ...

  8. JAVA 进制转换工具类 10进制转16进制 10进制转2进制 16进制转2进制 16进制10进制 2进制转10进制 2进制转16进制

    进制转换的坑: 注意:使用Integer的方法转换出来的2进制字符串 最高位是没有补零的 ,java的Integer类的toBinaryString()方法转换出来的二进制字符串只会保留最高非零位以后 ...

  9. java万能编码转换_分享万能java字符串编码转换工具类

    package com.zuidaima.util; import java.io.UnsupportedEncodingException; /** * 转换字符串的编码 */ public cla ...

最新文章

  1. 阿里开源组装式 Flutter 应用框架 Fish Redux
  2. centos安装后两个启动项、_centos8的启动项配置
  3. 社区电商平台小区乐获GGV领投超1亿美元融资
  4. 关于织梦系统不支持php中GD库的问题
  5. resultset需要关闭吗_旧电脑福音!关闭Windows这些没用的设置,电脑性能至少提升50%!...
  6. spring boot配置druid(德鲁伊)
  7. YYH算组合数(NOIP模拟赛Round 6)
  8. diamond专题(一)– 简介和快速使用
  9. 【Gym-101775 L】SOS【思维博弈】
  10. COMSOL模拟卡门涡街的模型
  11. 跨期套利策略(附:源码)
  12. 动漫头像1000张萌妹子图片,可以做高清头像壁纸
  13. 电容的串联和并联的性质
  14. 高能预警:SFDC安全技术大会将于11月19日在北京举办,岂安科技CEO罗启武受邀演讲
  15. Android手机图片上传 选择不了本地照片 解决方案
  16. vue手写上一页下一页
  17. 关于汉字转拼音的Pinyin4j工具使用
  18. Javascript小练习——班级学号点名器
  19. .MMAP是什么格式?
  20. Python基础-DAY16

热门文章

  1. 开发群发微信图文消息,正文中的图片却不显示问题
  2. Html5 Egret游戏开发 成语大挑战(三)开始界面
  3. 分图层加载CAD数据
  4. APP开发定制需求的常说分销模式,对于分销大家了解多少呢?
  5. 路由器怎么安装和使用详细
  6. 16个时髦的扁平化设计的 HTML5 CSS3 网站模板
  7. 资讯的服务器维护指什么,资讯
  8. 程序员在网吧敲代码,这波操作真的太秀了!
  9. 一文能读懂车载与Android的关系
  10. 机械设备故障诊断健康监测公开数据集