汉字人民币转阿拉伯数字

先看结果:

废话不多说 直接上代码:

package com.ht.commons;import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;public class ChineseRMBConverter {private static final Map<Character, BigDecimal> numMap = new HashMap<>();private static final Map<Character, BigDecimal> unitMap = new HashMap<>();static {numMap.put('零', new BigDecimal("0"));numMap.put('壹', new BigDecimal("1"));numMap.put('贰', new BigDecimal("2"));numMap.put('叁', new BigDecimal("3"));numMap.put('肆', new BigDecimal("4"));numMap.put('伍', new BigDecimal("5"));numMap.put('陆', new BigDecimal("6"));numMap.put('柒', new BigDecimal("7"));numMap.put('捌', new BigDecimal("8"));numMap.put('玖', new BigDecimal("9"));// 定义基本单位unitMap.put('拾', new BigDecimal("10"));unitMap.put('佰', new BigDecimal("100"));unitMap.put('仟', new BigDecimal("1000"));// 定义高级单位unitMap.put('万', new BigDecimal("10000"));unitMap.put('亿', new BigDecimal("100000000"));}public static BigDecimal chineseCurrencyToNumber(String currency) {BigDecimal total = BigDecimal.ZERO;BigDecimal tempNum = BigDecimal.ZERO; // 存储当前临时的数字BigDecimal section = BigDecimal.ZERO; // 当前小节的累加值,比如万以下,亿以下等BigDecimal lastUnit = BigDecimal.ONE; // 上一个单位的值,默认为1for (int i = 0; i < currency.length(); i++) {char ch = currency.charAt(i);// 判断当前字符是否为数字if (numMap.containsKey(ch)) {tempNum = numMap.get(ch);} else if (unitMap.containsKey(ch)) {BigDecimal unit = unitMap.get(ch);if (unit.compareTo(new BigDecimal("10000")) < 0) {section = section.add(tempNum.multiply(unit));} else {section = (section.add(tempNum)).multiply(unit);total = total.add(section);section = BigDecimal.ZERO; // 重置小节值}tempNum = BigDecimal.ZERO; // 重置临时数字lastUnit = unit; // 更新最后的单位}}// 确保最后没有单位的数字也被加上total = total.add(section.add(tempNum));return total;}public static void main(String[] args) {String cnNum1 = "壹拾捌万元整";String cnNum2 = "壹亿零壹拾捌万元整";String cnNum3 = "伍亿伍仟零肆万伍仟元整";BigDecimal result1 = chineseCurrencyToNumber(cnNum1);BigDecimal result2 = chineseCurrencyToNumber(cnNum2);BigDecimal result3 = chineseCurrencyToNumber(cnNum3);System.out.println(result1);System.out.println(result2);System.out.println(result3);}
}

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

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

相关文章

探讨解决emp.dll文件丢失问题的步骤和方法,一键解决emp.dll丢失烦恼问题

在电脑使用过程中&#xff0c;有时会遇到提示emp.dll文件丢失的错误弹窗&#xff0c;这种情形通常由于某些误操作或问题导致emp.dll文件出现异常。面对这样的状况&#xff0c;可以采取以下几种方法来解决emp.dll文件缺失的问题。接下来&#xff0c;让我们共同探讨解决emp.dll文…

D盘格式化了能正常使用吗 D盘格式化了数据怎么恢复 d盘格式化后安装不了软件怎么办 easyrecovery数据恢复软件

今天本文就为大家解决D盘格式化了能正常使用吗和D盘格式化了数据怎么恢复的硬盘格式化问题。 一、D盘格式化了能正常使用吗 通常我们所说的格式化硬盘操作是为硬盘做初始化的工作&#xff0c;以便能够抹掉老数据&#xff0c;重新写入新数据。格式化后的D盘&#xff0c;虽然其…

关于HTTP1.0、1.1、1.x、2.0、3.0与HTTPS之间的理解

关于HTTP1.0、1.1、1.x、2.0、3.0与HTTPS之间的理解 HTTP的由来 HTTP是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写。它的发展是万维网协会&#xff08;World Wide Web Consortium&#xff09;和Internet工作小组IETF&#xff08;Internet Eng…

用友NC open SQL注入漏洞复现(XVE-2023-29119)

0x01 产品简介 用友NC是由用友公司开发的一套面向大型企业和集团型企业的管理软件产品系列。这一系列产品基于全球最新的互联网技术、云计算技术和移动应用技术,旨在帮助企业创新管理模式、引领商业变革。 0x02 漏洞概述 用友NC /portal/pt/PaWfm/open接口的proDefPK参数存…

如何将普通maven项目转为maven-web项目

文件-项目结构&#xff08;File-->Project Structure &#xff09; 模块-->learn&#xff08;moudle-->learn&#xff09; 选中需要添加web的moudle&#xff0c;点击加号&#xff0c;我得是learn&#xff0c;单击选中后进行下如图操作&#xff1a; 编辑路径 结果如下…

乡村振兴多元共治,共绘乡村新蓝图:政府引领、企业助力、村民参与

乡村振兴是一项复杂而艰巨的任务&#xff0c;需要从多个角度进行考虑。以下是从不同身份出发对乡村振兴建设的思考&#xff1a; 1、政府领导的角度&#xff1a; 政府是乡村振兴的主要推动者和组织者。在制定和实施乡村振兴战略时&#xff0c;政府需要注重规划引领&#xff0c;科…

基于ssm的前后端分离鲜花销售系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本鲜花销售系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&am…

工单系统和工作流系统区别

随着信息技术的快速发展&#xff0c;许多组织和企业逐渐意识到有效管理工作流程对于提高工作效率和成本控制至关重要。在这种背景下&#xff0c;工单系统和工作流系统成为许多组织常用的管理工具。 然而&#xff0c;尽管它们都起到了简化和优化业务流程的作用&#xff0c;但工…

2024年第十七届 认证杯 网络挑战赛 (C题)| 云中的海盐 | 辐射传输方程 Stefan-Boltzmann分析 |数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 让我们来看看认证杯 网络挑战赛 (C题&#xff09;&#xff01…

数组去重的方法

1.方法一&#xff1a;利用对象属性名的唯一性 去重 数字或者数组去重&#xff0c;效率高 function unique(arr){var result {}; //利用对象属性名的唯一性来保证不重复for(var i0;i<arr.length;i){console.log("result[arr[i]]",result[arr[i]]);if(!result[arr…

数据库讲解---(数据查询)【MySQL版本】

目录​​​​​​​ 零.前言 一.单表查询 1.1SELECT语句 1.2例子说明 1.3SELECT使用 1.3.1在学生表中找出所有学生的籍贯 1.3.2查询学生表中的所有信息 1.3.3给列定义别名返回 1.4WHERE的使用 1.4.1查询所有不及格课程的学生的学号、课程号及成绩 1.4.2在学生表中找…

独家原创 | Matlab实现INFO-BiTCN-BiGRU-Attention多输入单输出回归预测

独家原创 | Matlab实现INFO-BiTCN-BiGRU-Attention多输入单输出回归预测 目录 独家原创 | Matlab实现INFO-BiTCN-BiGRU-Attention多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现INFO-BiTCN-BiGRU-Attention向量加权算法优化双向时间卷积…