怎么建立国外网站,教学网站建设计划,英语网站建设公司,百度推广账户登录文章目录 处理金额问题时#xff0c;经常需要将数字金额转换为中文大写金额#xff0c;以下为代码及测试用例。 代码
package com.common.utils.money;import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.RandomUtils;
import org.apache… 文章目录 处理金额问题时经常需要将数字金额转换为中文大写金额以下为代码及测试用例。 代码
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(\\.).length1?money:money.split(\\.)[0];//小数部分point money.split(\\.).length1?00:money.split(\\.)[1];if(0.equals(integer)){result 零cnIntLast;}else{int zeroCount 0;char[] array integer.toCharArray();String n;int p0,q0,m0;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 i0;i20;i){int integer RandomUtils.nextInt(0,17);int point RandomUtils.nextInt(0,3);String in integer0?0:RandomStringUtils.randomNumeric(integer);String po point0?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贰拾贰兆捌仟陆佰贰拾捌亿玖仟捌佰伍拾壹万柒仟贰佰壹拾壹元叁角涉及到的依赖包工具 !--常用工具类 --dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-lang3/artifactId/dependency以上示例若有其他bug问题请联系告知。谢谢