springboot 转换为金额大写工具类
代码如下
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.所需的jar包 2.工具类(可以直接拿去用) 1.所需的jar包 <!--获取汉字的拼音--><dependency><groupId& ...
- dto 转换为Do 工具类
import org.springframework.beans.BeanUtils; import org.springframework.util.CollectionUtils;import j ...
- SpringBoot 自带工具类~断言
SpringBoot 中提供了 Assert 断言工具类,通常用于数据合法性检查 org.springframework.util.Assert // 要求参数 object 必须为非空(Not Nu ...
- springboot 集成 redis 工具类
添加依赖 <!-- SpringBoot Boot Redis --><dependency><groupId>org.springframework.boot&l ...
- Android开发之dp转像素,像素转换为dp工具类,详细代码,带有源文件下载地址。...
2019独角兽企业重金招聘Python工程师标准>>> import android.content.Context; /** * @author 官网:http://www.93s ...
- springBoot整合Ehcache——工具类调用
项目需求要缓存常用数据,整合Ehcache实现,结果@Cacheable注解怎么都不管用,网上找了很多资料各种试各种不行,无奈!只好写个工具类使用. 一.pom.xml配置 <dependenc ...
- SpringBoot的JSON工具类(java),用于前后端分离
简介 JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式.它基于 ECMAScript(European Computer Manufactur ...
- SpringBoot 自带工具类~ReflectionUtils
org.springframework.util.ReflectionUtils 1.获取方法 // 在类中查找指定方法 Method findMethod(Class<?> clazz, ...
- SpringBoot 自带工具类~ResourceUtils
org.springframework.util.ResourceUtils 1.从资源路径获取文件 // 判断字符串是否是一个合法的 URL 字符串. static boolean isUrl(St ...
最新文章
- React里require('object-assign')里的实现原理
- java long类型转string_JavaSE的学习——数据类型
- Access restriction: The type 'BASE64Encoder' is not API 的解决方法
- HDFS概述(2)————Block块大小设置
- 7-57 愿天下有情人都是失散多年的兄妹 (25 分)(深搜)
- 高并发的常见策略--大型web项目
- 怎么样抓取微信小程序
- SPSS 安装后不可用 没有出现授权 不显示工具栏 桌面没有快捷图标
- Gxlcms有声小说系统/小说听书系统源码
- SIFT原作者David Lowe主页
- 新浪20年:独行侠的影响力之路
- 初秋进补 粥汤大对决
- 一文概括常用图像处理算法
- Linux下 Python通过ctypes调用cAPI (一)
- 1688图片搜索淘宝商品接口
- BOA 服务器从-1000开始学习(博客搬运工)
- vue-These relative modules were not found
- 微软Windows Azure云计算的几大竞争优势
- Arduino学习(五) 蜂鸣器实验
- 专利申请显示:苹果正在开发自动驾驶汽车无线充电技术
热门文章
- 原来装电信宽带送的光猫现在升级到了200M了是否要换个光猫?
- 计算机主板 开机什么也不显示,电脑开机无显示,不是主板也不是CPU问题,而是它坏了...
- react项目中,使用.jsx和.js文件书写react代码时,这两者有什么差异性?
- 学习mathematica(三)——基本数学运算
- java 泛型 与类反射_Java技能 —— 对象泛型以及类反射机制的应用
- UVA1103 古代象形符号 Ancient Messages
- 微信小程序(二)--- 数据绑定,事件绑定,全局配置window,tabBar,网络数据请求,request合法域名,GET,POST
- Office 365系列(5)------IMAP Migrate 搬迁方式至O365上来方法及步骤总结
- 阿里云发邮件遇到的问题
- 基于java的在线学生管理系统【原创】