java方法集:大写金额转换数字

// An highlighted block
var foo = 'bar';
package demo;
import java.math.BigDecimal;/*** 中文金额转数字工具* @date 2022/02/25 13:44* 金额大写规则参考  * https://baike.baidu.com/item/%E5%A4%A7%E5%86%99%E9%87%91%E9%A2%9D/12787267?fr=aladdin* https://zhidao.baidu.com/question/571881326.html*/
public class demo3 {/*** 大写金额转数字**/public static String ChineseConvertToNumber(String chineseAmount) {if (chineseAmount == null || chineseAmount.length() <= 0 || chineseAmount == "") {return null;}//移除计算干扰文字chineseAmount = chineseAmount.replace("元", "").replace("圆", "").replace("整", "").replace("正", "");// 字符切割char[] wordCharArray = chineseAmount.toCharArray();//最终要返回的数字金额BigDecimal numberAmount = BigDecimal.ZERO;//金额位标志量//表示有分位boolean fen = false;//表示有角位boolean jiao = false;// 表示个位不为0boolean yuan = false;//表示有十位boolean shi = false;//表示有百位boolean bai = false;//表示有千位boolean qian = false;//表示有万位boolean wan = false;//表示有亿位boolean yi = false;//从低位到高位计算for (int i = (wordCharArray.length - 1); i >= 0; i--) {//当前位金额值BigDecimal currentPlaceAmount = BigDecimal.ZERO;//判断当前位对应金额标志量if (wordCharArray[i] == '分') {fen = true;continue;} else if (wordCharArray[i] == '角') {jiao = true;continue;} else if (wordCharArray[i] == '元') {yuan = true;continue;} else if (wordCharArray[i] == '拾') {shi = true;continue;} else if (wordCharArray[i] == '佰') {bai = true;continue;} else if (wordCharArray[i] == '仟') {qian = true;continue;} else if (wordCharArray[i] == '万') {wan = true;continue;} else if (wordCharArray[i] == '亿' || wordCharArray[i] == '億') {yi = true;continue;}//根据标志量转换金额为实际金额double t = 0;if (fen) {t = ConvertNameToSmall(wordCharArray[i]) * 0.01;} else if (jiao) {t = ConvertNameToSmall(wordCharArray[i]) * 0.1;} else if (shi) {t = ConvertNameToSmall(wordCharArray[i]) * 10;} else if (bai) {t = ConvertNameToSmall(wordCharArray[i]) * 100;} else if (qian) {t = ConvertNameToSmall(wordCharArray[i]) * 1000;} else {t = ConvertNameToSmall(wordCharArray[i]);}currentPlaceAmount = new BigDecimal(t);//每万位处理if (yi) {currentPlaceAmount = currentPlaceAmount.multiply(new BigDecimal(100000000));} else if (wan) {currentPlaceAmount = currentPlaceAmount.multiply(new BigDecimal(10000));}numberAmount = numberAmount.add(currentPlaceAmount);// 重置状态//yi = false; // 亿和万  不可重置 下次循环还会用到//wan = false;fen = false;jiao = false;shi = false;bai = false;qian = false;yuan = false;}return numberAmount.setScale(2,BigDecimal.ROUND_HALF_UP).toString();}/*** 转换中文数字为阿拉伯数字** @param chinese* @return* @throws Exception*/private static int ConvertNameToSmall(char chinese) {int number = 0;String s = String.valueOf(chinese);switch (s) {case "零":number = 0;break;case "壹":number = 1;break;case "贰":number = 2;break;case "叁":number = 3;break;case "肆":number = 4;break;case "伍":number = 5;break;case "陆":number = 6;break;case "柒":number = 7;break;case "捌":number = 8;break;case "玖":number = 9;break;}return number;}public static void main(String[] args) {System.out.println("壹亿肆仟万元整元整:    140000000.00 " + ChineseConvertToNumber("壹亿肆仟万元整元整"));        System.out.println("壹万伍仟肆佰壹拾元贰角捌分肆厘        15410.284: " + ChineseConvertToNumber("壹万伍仟肆佰壹拾元贰角捌分肆厘"));System.out.println("壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾元零壹分  1234567890.01: " + ChineseConvertToNumber("壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾元零壹分"));     System.out.println("贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾元零壹分  234567890.01: " + ChineseConvertToNumber("贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾元零壹分"));System.out.println("叁仟肆佰伍拾陆万柒仟捌佰玖拾元零壹分  34567890.01: " + ChineseConvertToNumber("叁仟肆佰伍拾陆万柒仟捌佰玖拾元零壹分"));System.out.println("肆佰伍拾陆万柒仟捌佰玖拾元零壹分 4567890.01: " + ChineseConvertToNumber("肆佰伍拾陆万柒仟捌佰玖拾元零壹分"));System.out.println("伍拾陆万柒仟捌佰玖拾元零壹分  567890.01: " + ChineseConvertToNumber("伍拾陆万柒仟捌佰玖拾元零壹分"));System.out.println("陆万柒仟捌佰玖拾元零壹分  67890.01: " + ChineseConvertToNumber("陆万柒仟捌佰玖拾元零壹分"));System.out.println("柒仟捌佰玖拾元零壹分  7890.01: " + ChineseConvertToNumber("柒仟捌佰玖拾元零壹分"));System.out.println("捌佰玖拾元零壹分  890.01: " + ChineseConvertToNumber("捌佰玖拾元零壹分"));System.out.println("玖拾元零壹分  90.01: " + ChineseConvertToNumber("玖拾元零壹分"));System.out.println("壹元零壹分  1.01: " + ChineseConvertToNumber("壹元零壹分"));System.out.println("壹元壹角贰分  1.12: " + ChineseConvertToNumber("壹元壹角贰分"));System.out.println("壹园整  1.00: " + ChineseConvertToNumber("壹园整"));System.out.println("壹角   0.10: " + ChineseConvertToNumber("壹角"));System.out.println("贰分   0.02: " + ChineseConvertToNumber("贰分"));System.out.println("贰分   0.02: " + ChineseConvertToNumber("贰分"));System.out.println("壹元整  1.00: " + ChineseConvertToNumber("壹元整"));System.out.println("拾元整  10.00: " + ChineseConvertToNumber("拾元整") + "  错误写法");  //异常,必须大写数字开头System.out.println("壹拾元整  10.00: " + ChineseConvertToNumber("壹拾元整"));System.out.println("壹佰元整  100.00: " + ChineseConvertToNumber("壹佰元整"));System.out.println("壹仟元整  1000.00: " + ChineseConvertToNumber("壹仟元整"));System.out.println("壹万元整  10000.00: " + ChineseConvertToNumber("壹万元整"));System.out.println("拾万元整  100000.00: " + ChineseConvertToNumber("拾万元整") + "  错误写法");  //异常,必须大写数字开头System.out.println("壹拾万元整  100000.00: " + ChineseConvertToNumber("壹拾万元整"));System.out.println("壹佰万元整  1000000.00: " + ChineseConvertToNumber("壹佰万元整"));System.out.println("壹仟万元整  10000000.00: " + ChineseConvertToNumber("壹仟万元整"));System.out.println("壹亿元整  100000000.00: " + ChineseConvertToNumber("壹亿元整"));System.out.println("繁体:壹億元整  100000000.00: " + ChineseConvertToNumber("壹億元整"));   //  繁体字 億System.out.println("壹拾亿元整  1000000000.00: " + ChineseConvertToNumber("壹拾亿元整"));System.out.println("壹拾亿元壹角贰分  1000000000.12: " + ChineseConvertToNumber("壹拾亿元壹角贰分"));System.out.println("壹拾亿元壹分  1000000000.01: " + ChineseConvertToNumber("壹拾亿元壹分"));System.out.println("陆仟零柒元壹角肆分  6007.14: " + ChineseConvertToNumber("陆仟零柒元壹角肆分"));  //中间有0}
}

java方法集:大写金额转换数字相关推荐

  1. Java方法excel文件转换成xml文件

    excel转xml文件其实是很简单的,主要在于你要知道怎么去解决这个业务上的流程,那我们应该知道一点的是:我们必须把数据先从excel中读出来,然后对这些数据进行xml格式的封装.这样我们就很容易解决 ...

  2. javascript调用java方法

    本文中所有的代码使用 JavaScript 编写,但你也可以用其他兼容 JSR 223 的脚本语言.这些例子可作为脚本文件也可以在交互式 Shell 中一次运行一个语句的方式来运行.在 JavaScr ...

  3. java 中文域名转码_转换java方法

    java date String 类型相互转换 这种转换要用到java.text.SimpleDateFormat类 字符串转换成日期类型: 方法1: 也是最简单的方法 Date date=new D ...

  4. java moment 日期转换_关于日期:如何使用Java 8 DateTime API转换修改后的儒略日数字...

    我有一个数据库,用于存储日期和日期时间(分别为INTEGER和DOUBLE)作为已修改的儒略日数(MJD).修改后的儒略日数是自1858年11月17日午夜UTC以来连续的天数.根据定义,它们始终以UT ...

  5. java浮点数化为整数_[Java教程]javascript浮点数转换成整数三种方法

    [Java教程]javascript浮点数转换成整数三种方法 0 2014-06-24 04:00:27 将浮点数转换成整数方法有很多,分享三种常用方法. Summary 暂时我就想到3个方法而已.如 ...

  6. 【简单易懂】Java字符串应用场景:数字金额转换成大写汉字金额【金额转换】

    Java字符串应用场景:数字金额转换成汉字金额 文章目录 Java字符串应用场景:数字金额转换成汉字金额 前言 一.String简单介绍 二.字符串在开发中的应用场景 三.金额转换 3.1解题思路 3 ...

  7. java方法转换大写日期及人民币大写转换方式 .txt

    java方法转换大写日期及人民币大写转换方式 2012-03-02 14:38:03| 分类: java |字号 订阅 /** * 阿拉伯数字与中文数字(大小写)之间的转换 * */ import j ...

  8. JavaScript 转换数字为整数的方法

    本文将会列举并说明JavaScript 把一个number(或者numerical的对象)转换成一个整数相关方法. 使用parseInt parseInt的语法如下:parseInt(string, ...

  9. 《转载+完善》java实现中文大写金额转小写数字

    java实现中文大写金额转小写数字 原文地址:https://blog.csdn.net/Moneywa/article/details/97233159 上面原文博客,在处理 "叁拾壹亿叁 ...

  10. java bean与xml转换_Java Bean与xml互相转换的方法分析

    本文实例讲述了Java Bean与xml互相转换的方法.分享给大家供大家参考,具体如下: XML和Java Bean互相转换是一个很有用的功能,因为两者有着前后合作的关系,但解析的过程比较痛苦.下面介 ...

最新文章

  1. jre,jdk,jvm的关系
  2. poj(百练) 2743解题报告
  3. android移动应用基础教程源代码,Android移动应用基础教程 【程序活动单元Activity】...
  4. freemarker 模板填充乱码
  5. 机器学习笔记(五)---- 决策树
  6. Spring学习(三)
  7. 使用Asp.net MVC 2.0 +.NET 4.0 出现 “从客户端 ... 中检测到有潜在危险的 Request.Form 值”错误的解决办法...
  8. 是时候该了解下Unity3D了
  9. 《凤凰项目:一个IT运维的传奇故事》读书笔记
  10. 【HAVENT原创】使用 Spring Boot 的 AOP 自定义注解
  11. PM2.5数据的清洗,汇总与制作散点图(含源数据链接)
  12. 制作一个简单HTML旅游网站(HTML+CSS+JS)无锡旅游网页设计与实现8个页面
  13. 解构企业实名认证的几大「名场面」
  14. 计算器的改良(NOIP2000)
  15. 数据可视化分析教学课件——FineBI实验册节选====资产负债分析
  16. java编程实现107653秒是几天几小时几分钟几秒
  17. 白杨SEO:360搜索排名核心技巧是什么?网站怎么做360的SEO优化排名?
  18. EGO游戏 トキの戦華 时之战华 剧情攻略(+修改器+特殊码)
  19. 联想win8改win7
  20. C陷阱与缺陷(C Traps and Pitfalls)读书笔记

热门文章

  1. 句子迷 有哪些你第一眼就爱上的电影台词
  2. 10个简单的放松运动
  3. 计算机网络笔记2 应用层
  4. 通过光纤收发器指示灯判断网络状态
  5. 【国家集训队】跳跳棋(LCA+二分答案)
  6. 今有物不知其数三三数之JAVA_今有物不知其数,三三数之剩二,五五数之剩三,七七数...
  7. NL驱动表错误导致的性能问题
  8. 2008年中国网游产业发展六大趋势
  9. 电脑鼠标点一下就选很多程序
  10. 金蝶旗舰版固定资产计提折旧报错‘费用分配表所引用的*是非明细的核算项目’,如何解决?