代码如下

public static String getDX(int a){String num=String.valueOf(a);StringBuffer buffer=new StringBuffer("");if(num.length()==4){buffer.append(getChar(num.substring(0,1))).append("仟");if(num.substring(1,2).equals("0")){buffer.append(getChar(num.substring(1,2)));}else{buffer.append(getChar(num.substring(1,2))).append("佰");}if(num.substring(2,3).equals("0")){buffer.append(getChar(num.substring(2,3)));}else{buffer.append(getChar(num.substring(2,3))).append("拾");}if(num.substring(3,4).equals("0")){buffer.append("圆");}else{buffer.append(getChar(num.substring(3,4))).append("圆");}}if(num.length()==3){buffer.append(getChar(num.substring(1,2))).append("佰");buffer.append(getChar(num.substring(2,3))).append("拾");buffer.append(getChar(num.substring(3,4))).append("圆");}return  buffer.toString();}public static void main(String[] args) {System.out.println(getDX(2112));}public static String getChar(String num){if(num.equals("1")){return "壹";}else if(num.equals("2")){return "贰";}else{return "零";}}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 = "万千百拾圆角分" ;private static SysUtils NumToCN;/*** 把输入的金额转换为汉语中人民币的大写** @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();}

最后方法调用就ok了

BigDecimal numberOfMoney = new BigDecimal(user.getUserMoney());
String dx=SysUtils.number2CNMontrayUnit(numberOfMoney) ;

springboot 转换为金额大写工具类相关推荐

  1. 中文转换为拼音工具类(很全)

    中文转换为拼音工具类(很全) 1.所需的jar包 2.工具类(可以直接拿去用) 1.所需的jar包 <!--获取汉字的拼音--><dependency><groupId& ...

  2. dto 转换为Do 工具类

    import org.springframework.beans.BeanUtils; import org.springframework.util.CollectionUtils;import j ...

  3. SpringBoot 自带工具类~断言

    SpringBoot 中提供了 Assert 断言工具类,通常用于数据合法性检查 org.springframework.util.Assert // 要求参数 object 必须为非空(Not Nu ...

  4. springboot 集成 redis 工具类

    添加依赖 <!-- SpringBoot Boot Redis --><dependency><groupId>org.springframework.boot&l ...

  5. Android开发之dp转像素,像素转换为dp工具类,详细代码,带有源文件下载地址。...

    2019独角兽企业重金招聘Python工程师标准>>> import android.content.Context; /** * @author 官网:http://www.93s ...

  6. springBoot整合Ehcache——工具类调用

    项目需求要缓存常用数据,整合Ehcache实现,结果@Cacheable注解怎么都不管用,网上找了很多资料各种试各种不行,无奈!只好写个工具类使用. 一.pom.xml配置 <dependenc ...

  7. SpringBoot的JSON工具类(java),用于前后端分离

    简介 JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式.它基于 ECMAScript(European Computer Manufactur ...

  8. SpringBoot 自带工具类~ReflectionUtils

    org.springframework.util.ReflectionUtils 1.获取方法 // 在类中查找指定方法 Method findMethod(Class<?> clazz, ...

  9. SpringBoot 自带工具类~ResourceUtils

    org.springframework.util.ResourceUtils 1.从资源路径获取文件 // 判断字符串是否是一个合法的 URL 字符串. static boolean isUrl(St ...

最新文章

  1. React里require('object-assign')里的实现原理
  2. java long类型转string_JavaSE的学习——数据类型
  3. Access restriction: The type 'BASE64Encoder' is not API 的解决方法
  4. HDFS概述(2)————Block块大小设置
  5. 7-57 愿天下有情人都是失散多年的兄妹 (25 分)(深搜)
  6. 高并发的常见策略--大型web项目
  7. 怎么样抓取微信小程序
  8. SPSS 安装后不可用 没有出现授权 不显示工具栏 桌面没有快捷图标
  9. Gxlcms有声小说系统/小说听书系统源码
  10. SIFT原作者David Lowe主页
  11. 新浪20年:独行侠的影响力之路
  12. 初秋进补 粥汤大对决
  13. 一文概括常用图像处理算法
  14. Linux下 Python通过ctypes调用cAPI (一)
  15. 1688图片搜索淘宝商品接口
  16. BOA 服务器从-1000开始学习(博客搬运工)
  17. vue-These relative modules were not found
  18. 微软Windows Azure云计算的几大竞争优势
  19. Arduino学习(五) 蜂鸣器实验
  20. 专利申请显示:苹果正在开发自动驾驶汽车无线充电技术

热门文章

  1. 原来装电信宽带送的光猫现在升级到了200M了是否要换个光猫?
  2. 计算机主板 开机什么也不显示,电脑开机无显示,不是主板也不是CPU问题,而是它坏了...
  3. react项目中,使用.jsx和.js文件书写react代码时,这两者有什么差异性?
  4. 学习mathematica(三)——基本数学运算
  5. java 泛型 与类反射_Java技能 —— 对象泛型以及类反射机制的应用
  6. UVA1103 古代象形符号 Ancient Messages
  7. 微信小程序(二)--- 数据绑定,事件绑定,全局配置window,tabBar,网络数据请求,request合法域名,GET,POST
  8. Office 365系列(5)------IMAP Migrate 搬迁方式至O365上来方法及步骤总结
  9. 阿里云发邮件遇到的问题
  10. 基于java的在线学生管理系统【原创】