有时候一些金额数字需要转成中文大写展示到发票的金额框这类地方,包括一些纯粹的数量非金额的数字的大写转换,网上看很多都是金额的,纯数字的话有些不同,这里写了一个数字转中文大写的工具类:

1:金额数字转中文;

2:数字转大写 :100 = 壹佰;

3:数字转大写 :100 = 壹佰零拾零;

有啥意见欢迎交流,好用点个赞哇!哈哈

package com.syncsoft.service.center.util;/*** 数字转大写工具类* @Author 郑鸿钦* @CreatedTime 2019/12/21*/
public class NumberToChineseUtil {private static final String UNIT = "万千佰拾亿千佰拾万千佰拾元角分";private static final String SL_UNIT = "万千佰拾亿千佰拾万千佰拾 ";private static final String DIGIT = "零壹贰叁肆伍陆柒捌玖";private static final double MAX_VALUE = 9999999999999.99D;// 金额转中文public static String moneyToChinese(double v) {String prefix = "";if(v < 0 ) {prefix = "负";v = Math.abs(v);}if (v > MAX_VALUE) {return "参数非法!";}long l = Math.round(v * 100);if (l == 0) {return "零元整";}String strValue = l + "";// i用来控制数int i = 0;// j用来控制单位int j = UNIT.length() - strValue.length();String rs = "";boolean isZero = false;for (; i < strValue.length(); i++, j++) {char ch = strValue.charAt(i);if (ch == '0') {isZero = true;if (UNIT.charAt(j) == '亿' || UNIT.charAt(j) == '万' || UNIT.charAt(j) == '元') {rs = rs + UNIT.charAt(j);isZero = false;}} else {if (isZero) {rs = rs + "零";isZero = false;}rs = rs + DIGIT.charAt(ch - '0') + UNIT.charAt(j);}}if (!rs.endsWith("分")) {rs = rs + "整";}rs = rs.replaceAll("亿万", "亿");return prefix + rs;}/*** 数字转大写 :100 = 壹佰* @param v 数字* @return* @Author 郑鸿钦* @CreatedTime 2019/12/21*/// 数量转中文public static String slToChinese(double v) {String prefix = "";if(v < 0 ) {prefix = "负";v = Math.abs(v);}if (v > MAX_VALUE) {return "参数非法!";}long l = Math.round(v);if (l == 0) {return "零";}String strValue = l + "";// i用来控制数int i = 0;// j用来控制单位int j = SL_UNIT.length() - strValue.length();String rs = "";boolean isZero = false;for (; i < strValue.length(); i++, j++) {char ch = strValue.charAt(i);if (ch == '0') {isZero = true;if (SL_UNIT.charAt(j) == '亿' || SL_UNIT.charAt(j) == '万' ) {rs = rs + SL_UNIT.charAt(j);isZero = false;}} else {if (isZero) {rs = rs + "零";isZero = false;}rs = rs + DIGIT.charAt(ch - '0') + SL_UNIT.charAt(j);}}rs = rs.replaceAll("亿万", "亿");return prefix + rs;}/*** 数字转大写 :100 = 壹佰零拾零* @param userInput* @return* @Author 郑鸿钦* @CreatedTime 2019/12/21*/public static String transFormation(String userInput) {//1.定义一个匹配数组char[] capitaLization = {'零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'};char[] company = {'拾', '佰', '仟','万'};//2.把传入的字符串转换为数组遍历进行替换数字//2.1定义一个字符串存储拼接String p = "";//2.2定义字符串变量用作返回值String numFinal = "";//字符串转换为数字char[] ps = userInput.toCharArray();//定义变量统计单位下标int a = 0;//倒序循环字符串for (int i = ps.length - 1; i >= 0; i--) {//如果单位下标不越界if(i == ps.length - 1){p += capitaLization[Integer.parseInt(String.valueOf(ps[i]))];}else if (a < company.length) {p += String.valueOf(company[a]);p += capitaLization[Integer.parseInt(String.valueOf(ps[i]))];a++;} else {//如果下标越界了然下标回到1这里使用0a = 0;p += String.valueOf(company[0]);p += capitaLization[Integer.parseInt(String.valueOf(ps[i]))];a++;}}//如果字符串长度大于9说明到亿位所以替换亿位和万位的单位//1.替换好的字符串转为数组 玖拾捌佰柒仟陆拾伍佰肆仟叁拾贰佰壹char[] userI = p.toCharArray();//如果字符数组长度大于17则说明有亿位if(userI.length>=17){//替换亿位单位15userI[15] = '亿';}//反转字符数组//倒循环数组对p赋值for (int i = userI.length-1; i >=0; i--) {numFinal += String.valueOf(userI[i]);}return numFinal;}public static void main(String[] args) {String numStr = "21";System.out.println(NumberToChineseUtil.moneyToChinese(21.00));System.out.println(NumberToChineseUtil.transFormation(numStr));}}

JAVA 纯数字/金额数字转中文大写相关推荐

  1. Java 将数字金额转成中文大写

    一个 Java 将数字金额转成中文大写的工具类,还不是很完善. import java.util.regex.Matcher; import java.util.regex.Pattern;publi ...

  2. 把数字金额转换成中文大写数字

    //把数字金额转换成中文大写数字 function changeNumMoneyToChinese(money) { var cnNums = new Array("零", &qu ...

  3. 如何把数字金额转换成中文大写

    问题:要求把万亿级别内的浮点数转换成中文大写,例如把数字1112221000060.254400转换成:壹万壹仟壹佰贰拾贰亿贰仟壹佰万零陆拾元零贰角伍分 分析:关键是先把double类型转换成char ...

  4. php数字转换百千万,PHP数字金额转换成中文大写显示

    整个功能其实不难,只是还算挺实用,所以记一下哈,其他编程语言转换一下也是能可以的! 思路:把传过来的金额转换成整数和小数两部分,再对其分别进行转换处理 代码附上: function moneyToSt ...

  5. php显示大写金额,PHP数字金额转换成中文大写显示

    整个功能其实不难,只是还算挺实用,所以记一下哈,其他编程语言转换一下也是能可以的! 思路:把传过来的金额转换成整数和小数两部分,再对其分别进行转换处理 代码附上: function moneyToSt ...

  6. php 把数字变成大写数字,PHP数字金额转换成中文大写显示

    整个功能其实不难,只是还算挺实用,所以记一下哈,其他编程语言转换一下也是能可以的! 思路:把传过来的金额转换成整数和小数两部分,再对其分别进行转换处理 代码附上: function moneyToSt ...

  7. 数字金额转繁体中文大写字符串

    function intToChinese ( str ) {str = str+'';var len = str.length-1;var idxs = ['','十','百','千','万','十 ...

  8. 把数字金额转换成人民币大写[原创]

    最近在用这个博客,感觉博客园不错,以前用的是新浪的,感觉这个更好,所以好多东西现在转到这边来了. 下面是一个数字转人民币大写的类,不啰嗦了,下面是代码:  1    /**/ /// <summ ...

  9. 2-34 中文大写金额。声明RMB人民币类如下,实现其中成员方法。public class rMB // 人民币类 {// 返回金额x的中文大写形式字符串,如x=123 45,转化为“壹佰贰拾

    1.实验题目: 2-34 中文大写金额. 声明RMB人民币类如下,实现其中成员方法. public class rMB // 人民币类 { // 返回金额x的中文大写形式字符串,如x=123 45,转 ...

最新文章

  1. 陈曦:超低延迟下的实时合唱体验升级
  2. css动画(transition/transform/animation)
  3. .NET MAUI 已在塔架就位 ,4月份发布RC
  4. 钉钉项目任务怎么添加审批表单
  5. 搭建Flink集群环境
  6. 苹果架构调整:AI、机器学习和Siri合并,由前谷歌AI负责人领导
  7. 黄聪:用于 Web 应用程序项目部署的 Web.config 转换语法
  8. scala编程第16章学习笔记(3)——List类的高阶方法
  9. 500状态码_教你玩转HTTP—状态码
  10. svn删除文件文件夹(遇到的问题解决)
  11. 思科2811路由器采购回来首次配置
  12. 微服务网关选型,请收下我的膝盖!
  13. 功率因数 matlab,matlab功率因数测量
  14. QStackedWidget切换动画实现以及尝试过程中花点、花屏、背景无法透明解决处理
  15. 实现电路阻抗匹配的两个方法
  16. 如何在2小时内快速入门彩铅
  17. Android开发本地及网络Mp3音乐播放器(十七)已存在歌曲歌词下载
  18. Lua环境搭建 Win10
  19. 编译原理——词法分析(3)有穷自动机中DFA与NFA的理解
  20. 多伦多计算机科学排名,Times公布的计算机和工程专业排名,多伦多大学占两大榜首,最抢眼!...

热门文章

  1. 0 在c语言中有什么作用,\0在c语言中代表什么?
  2. 批量下载NCBI各种数据的方法集合
  3. 科普丨机器学习翻译和谷歌翻译算法
  4. Spring boot——Actuator 详解
  5. [Linux 基础] -- Linux input 子系统要点总结
  6. Nature子刊:AI技术从零开始设计具有生物活性的蛋白质
  7. 【JS】获取下个月的今天
  8. docker安装nginx镜像
  9. 面试经验//Java新手如何制定优秀的职业规划?看大牛怎么说!
  10. 树选择排序(Tree Selection Sorting)介绍