java金额大小写转换/金额转大写/数字金额转换为中文大写金额

文章目录


处理金额问题时,经常需要将数字金额转换为中文大写金额,以下为代码及测试用例。

代码

package com.common.utils.money;import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils;import java.math.BigDecimal;
import java.text.DecimalFormat;public class MoneyUtils {private static final String[] cnNums = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; // 汉字的数字private static final String[] cnIntRadice = { "", "拾", "佰", "仟" }; // 基本单位private static final String[] cnIntUnits = { "", "万", "亿", "兆" }; // 对应整数部分扩展单位private static final String[] cnDecUnits = { "角", "分"}; // 对应小数部分单位private static final String cnInteger = "整"; // 整数金额时后面跟的字符private static final String cnIntLast = "元"; // 整型完以后的单位/*** 金额大小写转换,将数字转换为汉字* @param money 支持最大16位整数2位小数* @return*/public static String amountConversion(String money){//如果传入为空,则返回nullif(StringUtils.isBlank(money)){return "null";}String result = "";//整数部分String integer="";//小数部分String point="";if(money.matches("^[0-9]{0,16}|[0-9]{0,16}+([.]{0,1}[0-9]{0,2})$")){BigDecimal bigDecimal = new BigDecimal(money);//对金额进行格式化,统一小数点后面保留两位。 此举能去除整数部分多余的0,以及小数部分统一保留两位 如:00456.1-->456.10money = new DecimalFormat("##0.00").format(bigDecimal);//整数部分integer = money.split("\\.").length==1?money:money.split("\\.")[0];//小数部分point = money.split("\\.").length==1?"00":money.split("\\.")[1];if("0".equals(integer)){result = "零"+cnIntLast;}else{int zeroCount = 0;char[] array = integer.toCharArray();String n="";int p=0,q=0,m=0;for (int i = 0; i < integer.length(); i++) {n = Character.toString(array[i]);p = integer.length() - i - 1;q = p / 4;m = p % 4;if (n.equals("0")) {zeroCount++;} else {if (zeroCount > 0) {result += cnNums[0];}zeroCount = 0; // 归零result += cnNums[Integer.parseInt(n)] + cnIntRadice[m];}if (m == 0 && zeroCount < 4) {result += cnIntUnits[q];}}result += cnIntLast;}//组装小数部分if (point.length() > 0) { // 小数部分String n="";char[] array = point.toCharArray();for (int i = 0; i < point.length(); i++) {n = Character.toString(array[i]);if (!n.equals("0")) {result += cnNums[Integer.parseInt(n)] + cnDecUnits[i];}}}}else{return "请检查金额(整数位不能超过16位,小数不能超过2位)";}if (result.trim().length() == 0) {result += cnNums[0] + cnIntLast + cnInteger;} else if (point.trim().length() == 0) {result += cnInteger;}return result;}public static void main(String[] args) {for(int i=0;i<20;i++){int integer = RandomUtils.nextInt(0,17);int point = RandomUtils.nextInt(0,3);String in = integer==0?"0":RandomStringUtils.randomNumeric(integer);String po = point==0?"0":RandomStringUtils.randomNumeric(point);String money = in+"."+po;System.out.println(money +"====="+amountConversion(money));}}}

执行结果

03512484.84=====叁佰伍拾壹万贰仟肆佰捌拾肆元捌角肆分
0997951710432.26=====玖仟玖佰柒拾玖亿伍仟壹佰柒拾壹万零肆佰叁拾贰元贰角陆分
5170473553807.0=====伍兆壹仟柒佰零肆亿柒仟叁佰伍拾伍万叁仟捌佰零柒元
57646.7=====伍万柒仟陆佰肆拾陆元柒角
068874838.95=====陆仟捌佰捌拾柒万肆仟捌佰叁拾捌元玖角伍分
123.0=====壹佰贰拾叁元
1137531.0=====壹佰壹拾叁万柒仟伍佰叁拾壹元
140220033243377.3=====壹佰肆拾兆零贰仟贰佰亿零叁仟叁佰贰拾肆万叁仟叁佰柒拾柒元叁角
9776105.8=====玖佰柒拾柒万陆仟壹佰零伍元捌角
57292342666.0=====伍佰柒拾贰亿玖仟贰佰叁拾肆万贰仟陆佰陆拾陆元
35581333.0=====叁仟伍佰伍拾捌万壹仟叁佰叁拾叁元
0.0=====零元
0.29=====零元贰角玖分
193138042.20=====壹亿玖仟叁佰壹拾叁万捌仟零肆拾贰元贰角
78998357458.0=====柒佰捌拾玖亿玖仟捌佰叁拾伍万柒仟肆佰伍拾捌元
33145487.0=====叁仟叁佰壹拾肆万伍仟肆佰捌拾柒元
00.79=====零元柒角玖分
470292516.0=====肆亿柒仟零贰拾玖万贰仟伍佰壹拾陆元
98537469302.32=====玖佰捌拾伍亿叁仟柒佰肆拾陆万玖仟叁佰零贰元叁角贰分
290881677448552.4=====贰佰玖拾兆零捌仟捌佰壹拾陆亿柒仟柒佰肆拾肆万捌仟伍佰伍拾贰元肆角
0509932.0=====伍拾万零玖仟玖佰叁拾贰元
515802410635.0=====伍仟壹佰伍拾捌亿零贰佰肆拾壹万零陆佰叁拾伍元
153522307121.0=====壹仟伍佰叁拾伍亿贰仟贰佰叁拾万零柒仟壹佰贰拾壹元
315649784.3=====叁亿壹仟伍佰陆拾肆万玖仟柒佰捌拾肆元叁角
08499254411.0=====捌拾肆亿玖仟玖佰贰拾伍万肆仟肆佰壹拾壹元
865964.5=====捌拾陆万伍仟玖佰陆拾肆元伍角
8493.29=====捌仟肆佰玖拾叁元贰角玖分
899808991634.53=====捌仟玖佰玖拾捌亿零捌佰玖拾玖万壹仟陆佰叁拾肆元伍角叁分
0.6=====零元陆角
4906936245491.0=====肆兆玖仟零陆拾玖亿叁仟陆佰贰拾肆万伍仟肆佰玖拾壹元
125399048.24=====壹亿贰仟伍佰叁拾玖万玖仟零肆拾捌元贰角肆分
7781832091052.0=====柒兆柒仟捌佰壹拾捌亿叁仟贰佰零玖万壹仟零伍拾贰元
3444548721635.4=====叁兆肆仟肆佰肆拾伍亿肆仟捌佰柒拾贰万壹仟陆佰叁拾伍元肆角
615398535213.2=====陆仟壹佰伍拾叁亿玖仟捌佰伍拾叁万伍仟贰佰壹拾叁元贰角
19740620.0=====壹仟玖佰柒拾肆万零陆佰贰拾元
908355661.0=====玖亿零捌佰叁拾伍万伍仟陆佰陆拾壹元
1527543856.9=====壹拾伍亿贰仟柒佰伍拾肆万叁仟捌佰伍拾陆元玖角
7515086625.6=====柒拾伍亿壹仟伍佰零捌万陆仟陆佰贰拾伍元陆角
5303705705.5=====伍拾叁亿零叁佰柒拾万零伍仟柒佰零伍元伍角
3610554919937.4=====叁兆陆仟壹佰零伍亿伍仟肆佰玖拾壹万玖仟玖佰叁拾柒元肆角
72677.2=====柒万贰仟陆佰柒拾柒元贰角
7436163894691.0=====柒兆肆仟叁佰陆拾壹亿陆仟叁佰捌拾玖万肆仟陆佰玖拾壹元
76448611.36=====柒仟陆佰肆拾肆万捌仟陆佰壹拾壹元叁角陆分
2004947835.0=====贰拾亿零肆佰玖拾肆万柒仟捌佰叁拾伍元
5652635143936.0=====伍兆陆仟伍佰贰拾陆亿叁仟伍佰壹拾肆万叁仟玖佰叁拾陆元
72247114002445.6=====柒拾贰兆贰仟肆佰柒拾壹亿壹仟肆佰万零贰仟肆佰肆拾伍元陆角
943331110563734.0=====玖佰肆拾叁兆叁仟叁佰壹拾壹亿壹仟零伍拾陆万叁仟柒佰叁拾肆元
20265842.94=====贰仟零贰拾陆万伍仟捌佰肆拾贰元玖角肆分
7571728827241211.0=====柒仟伍佰柒拾壹兆柒仟贰佰捌拾捌亿贰仟柒佰贰拾肆万壹仟贰佰壹拾壹元
86256.0=====捌万陆仟贰佰伍拾陆元
77.50=====柒拾柒元伍角
25266950163.0=====贰佰伍拾贰亿陆仟陆佰玖拾伍万零壹佰陆拾叁元
968140.9=====玖拾陆万捌仟壹佰肆拾元玖角
829131829905753.0=====捌佰贰拾玖兆壹仟叁佰壹拾捌亿贰仟玖佰玖拾万零伍仟柒佰伍拾叁元
4208933.0=====肆佰贰拾万零捌仟玖佰叁拾叁元
8110046236702960.0=====捌仟壹佰壹拾兆零肆佰陆拾贰亿叁仟陆佰柒拾万零贰仟玖佰陆拾元
428847.10=====肆拾贰万捌仟捌佰肆拾柒元壹角
130952521582670.0=====壹佰叁拾兆零玖仟伍佰贰拾伍亿贰仟壹佰伍拾捌万贰仟陆佰柒拾元
24.35=====贰拾肆元叁角伍分
81534639.0=====捌仟壹佰伍拾叁万肆仟陆佰叁拾玖元
5832.8=====伍仟捌佰叁拾贰元捌角
3091057217.0=====叁拾亿零玖仟壹佰零伍万柒仟贰佰壹拾柒元
142027.0=====壹拾肆万贰仟零贰拾柒元
1.0=====壹元
535245974.20=====伍亿叁仟伍佰贰拾肆万伍仟玖佰柒拾肆元贰角
548618.0=====伍拾肆万捌仟陆佰壹拾捌元
725699663.0=====柒亿贰仟伍佰陆拾玖万玖仟陆佰陆拾叁元
13070168733.0=====壹佰叁拾亿零柒仟零壹拾陆万捌仟柒佰叁拾叁元
0.0=====零元
7634.0=====柒仟陆佰叁拾肆元
104.57=====壹佰零肆元伍角柒分
886878.15=====捌拾捌万陆仟捌佰柒拾捌元壹角伍分
2161710482.92=====贰拾壹亿陆仟壹佰柒拾壹万零肆佰捌拾贰元玖角贰分
22862898517211.3=====贰拾贰兆捌仟陆佰贰拾捌亿玖仟捌佰伍拾壹万柒仟贰佰壹拾壹元叁角

涉及到的依赖包工具

 <!--常用工具类 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId></dependency>

以上示例若有其他bug问题,请联系告知。谢谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/158243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将bitmap转化为1位黑白像素图像(仅保留黑色,其它颜色会删除)

/// <summary> /// 将bitmap转化为1位黑白像素图像(仅保留黑色&#xff0c;其它颜色会删除) /// </summary> /// <param name"bmp"></param> /// <returns></returns> public static Bitmap To1Bit(Bitmap bmp) {Bitmap tmp bm…

C 语言 typedef 关键字

C 语言 typedef 关键字 C 语言提供了 typedef 关键字&#xff0c;您可以使用它来为类型取一个新的有意义的名字。也就是用于重新定义已经存在的变量的名称。 typedef 的语法 typedef <existing_name> <alias_name>在以上语法中&#xff0c;“ **existing_name”…

url最大长度

https://blog.csdn.net/weixin_38673922/article/details/130932457 对于前端作为分享页&#xff0c;或者跳转新页面时&#xff0c;或者做hrbrid 通信&#xff0c;需要用到一系列的参数来处理相对的业务逻辑&#xff0c;那么具体url可以携带多少参数合适&#xff0c;从网上搜索…

【CodeTop】TOP 100 刷题 11-20

文章目录 11. 二叉树的层序遍历题目描述代码与解题思路 12. 搜索旋转排序数组题目描述代码与解题思路 13. 买卖股票的最佳时机题目描述代码和解题思路 14. 岛屿数量题目描述代码与解题思路 15. 环形链表题目描述代码与解题思路 16. 有效的括号题目描述代码与解题思路 17. 合并两…

使用 millis() 函数作为延迟的替代方法(电位器控制延迟时间)

接线图&#xff1a; 代码&#xff1a; unsigned long currentMillis 0; unsigned long previousMillis_LED1 0; unsigned long LED1_delay0; unsigned long previousMillis_LED2 0; unsigned long LED2_delay0; #define LED1 3 #define LED2 9 #define P1 A2 …

动态规划求数组中相邻两数的最小差值( 即相差的绝对值 ) java 实现

算法的核心是&#xff1a;计算当前数和前一个数的差值,用该差值和以前最小的连续数的差值作比较&#xff1b;如果当前的差值更小&#xff0c;则发现了更小的连续数的差值&#xff1b;如果当前的差值更大&#xff0c;则沿用以前的最小连续数差值作为新的最小连续数差值。 MinDif…

python写文件

output_file open(E:/XD_transfer/代码/CNN_new/try.csv, w) output_file.write(Sample, \n) for j in range(5):output_file.write(str(j) \n)

2023亚太杯数学建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 最短时…

HttpClient发送MultipartFile多文件及多参数请求

1、环境准备&#xff1a; <dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.1</version></dependency><dependency><groupId>org.apache.httpcomponent…

关于 win11 系统下12代/13代英特尔大小核架构 CPU 的 VMware 优化:输入延迟、卡顿,大小核调度

关于 win11 系统下12代/13代英特尔大小核架构 CPU 的 VMware 优化&#xff1a;输入延迟、卡顿&#xff0c;大小核调度 一、前言二、VMware 的优化2.1 键鼠输入延迟问题的解决2.1.1 搜索内核隔离2.1.2 关闭内存完整性并重启2.1.3 搜索启用或关闭windows功能2.1.4 关闭 hyper-v 和…

Java中有接口了为什么还需要有抽象类,抽象类和普通类和接口,三者之间有什么区别和联系

在 Java 中&#xff0c;接口、抽象类和普通类都是不同的概念&#xff0c;各自有其特定的用途和特性。了解它们之间的区别和联系有助于更好地利用 Java 的面向对象编程特性。 接口&#xff08;Interface&#xff09; 定义: 接口是一种完全抽象的类&#xff0c;它允许声明方法但…

【23真题】难!下沙“小清华”难度爆增!

今天分享的是23年“下沙小清华”杭州电子科技大学843的信号与系统试题及解析。 本套试卷难度分析&#xff1a;22年杭电843考研真题&#xff0c;我也发布过&#xff0c;若有需要&#xff0c;戳这里自取&#xff01;平均分为112分&#xff0c;最高分为145分&#xff01;该院校23…

Impala VS Hive

Impala和Hive的关系 Impala是基于Hive的大数据实时分析查询引擎&#xff0c;直接使用Hive的元数据库Metadata,意味着impala元数据都存储在Hive的metastore中。并且impala兼容Hive的sql解析&#xff0c;实现了Hive的SQL语义的子集&#xff0c;功能还在不断的完善中。 与Hive的…

如何用CHAT理解数理化?

问CHAT&#xff1a;扇形面积的概念&#xff0c;简单阐述一下。 CHAT回复&#xff1a; 扇形面积是指扇形这种二维几何图形所覆盖的区域大小。 扇形是一个圆的一部分&#xff0c;是由圆心出发的两条射线&#xff08;半径&#xff09;和这两条射线所夹角决定的圆周上的弧线所围成…

近期为何事故频发,企业安全生产如何保障?

近期&#xff0c;多地陆续发生了一系列企业安全生产事故&#xff0c;给企业和员工带来了严重的生命和财产损失&#xff0c;引发了社会各界对安全生产问题的广泛关注。安全生产是企业发展的重要保障&#xff0c;然而&#xff0c;企业在追求经济效益的过程中&#xff0c;往往忽视…

为虚幻引擎开发者准备的Unity指南

目录 1.前言2.编辑器2.1 Scene 视图&#xff08;视口&#xff09;2.2 Game 视图 (Play in Editor)2.3.Hierarchy 窗口 (World Outliner)2.4 Project 窗口(Content Browser)2.5 Inspector (Details)2.6 Console&#xff08;消息视图/输出日志&#xff09;2.7 Modes 面板在哪里&a…

​​​​​​​3分钟实现EG网关串口连接麦格米特PLC

EG网关串口连接麦格米特PLC 前言&#xff1a;麦格米特PLC广泛应于工业控制领域&#xff0c;是一款性能高、稳定性强的PLC设备。此文档将介绍如何使用EG系列网关通过串口连接麦格米特PLC&#xff0c;并添加到EMCP物联网云平台&#xff0c;实现电脑Web页面、手机APP和微信对麦格米…

【Rxjava详解】(一)观察者模式的拓展

文章目录 RxJava引入扩展的观察者模式RxJava的观察者模式基本实现 RxJava入门示例Action RxJava引入 在介绍RxJava之前先说一下Rx。全称是Reactive Extensions&#xff0c;直译过来就是响应式扩展 Rx基于观察者模式&#xff0c;它是一种编程模型&#xff0c;目标是提供一致的…

uniapp:如何实现点击图片可以全屏展示预览

这个需要使用uniapp中的api&#xff1a;uni.previewImage&#xff0c;使用方法如下 1、html <template><view><image src"图片路径" click"preview"></image></view> </template> 2、JavaScript <script> e…

pyhive的离线安装及使用示例

pyhive离线安装 pyhive下载离线安装包 下载方式一:直接把jieba包下载到/download/pip/目录下 pip download -d /download/pip/ pyhive[hive_pure_sasl]下载方式二:建一个requirement.txt文件里面一行一行写需要的包,/usr/local/download/pip/是下载目录 pip download -d /d…