/*** 大写汉字转为阿拉伯数字*/
public class ChineseChangeToNumber {/*** 中文简体*/public static final String[] RMB_NUMBERS = new String[] {"一","二","三","四","五","六","七","八","九","零"};/*** 中文繁体*/public static final String[] BIG_RMB_NUMBERS = new String[] {"壹","贰","叁","肆","伍","陆","柒","捌","玖","零"};/*** 与汉字相应的转化的数字*/public static final Long[] TO_ARABIC_NUMBERS = new Long[] {1L,2L,3L,4L,5L,6L,7L,8L,9L,0L};/*** 人民币单位关键词  简写(大写数字倍数,一定要由大到小)*/public static final String[] RMB_UNIT=new String[] {"亿","万","千","百","十","元","角","分","厘"};/*** 繁体*/public static final String[] BIG_RMB_UNIT=new String[] {"億","萬","仟","佰","拾","圆","角","分","厘"};/*** 与人民币单位关键词对应的基数*/public static final BigDecimal[] TO_CARDINAL_NUMBERS = new BigDecimal[] {new BigDecimal(100000000L), new BigDecimal(10000L),new BigDecimal(1000L),new BigDecimal(100L), BigDecimal.TEN, BigDecimal.ONE, new BigDecimal("0.1"),new BigDecimal("0.01"),new BigDecimal("0.001")};/*** 大写转化为小写的过程操作*/public static BigDecimal ChineseToNumber(String money) {BigDecimal number = getDigitalNum(money);//return Double.parseDouble(number.toString());//return number.toString();return new BigDecimal(number.toString());}/*** 辅助类,处理中文数字转换成阿拉伯数字,利用递归算法* @param money* @return*/public static BigDecimal getDigitalNum(String money) {BigDecimal result = BigDecimal.ZERO;if((money==null || money.trim().length()<=0)) {return result;}//匹配大写金额的单位for(int i = 0;i<RMB_UNIT.length;i++) {//查找字符中的简繁单位int index = money.lastIndexOf(RMB_UNIT[i]) == -1 ? money.lastIndexOf(BIG_RMB_UNIT[i]): money.lastIndexOf(RMB_UNIT[i]);if(index>=0) {String pre_money = money.substring(0,index);//截取当前单位前面的中文字符串money = money.substring(index+1);//截取当前单位后面的字符串,进行下一次迭代比较if((pre_money==null || pre_money.length()<=0) && TO_CARDINAL_NUMBERS[i].intValue()==10) {//处理拾开头的特殊字符例如拾、十result = result.add(TO_CARDINAL_NUMBERS[i]);}else {//对当前单位截取的前面的字符递归处理result = result.add(getDigitalNum(pre_money).multiply(TO_CARDINAL_NUMBERS[i]));}}}//如果不带单位直接阿拉伯数字匹配替换if(money!=null && money.length()>0) {result = result.add(getArabicNumByBig(money));}return result;}/*** 辅助类中文数字转为对应阿拉伯数字* @param* @return*/public static BigDecimal getArabicNumByBig(String big) {BigDecimal result = BigDecimal.ZERO;for(int j = 0;j<RMB_NUMBERS.length;j++) {big = big.replaceAll(RMB_NUMBERS[j], TO_ARABIC_NUMBERS[j].toString());//中文小写替换big = big.replaceAll(BIG_RMB_NUMBERS[j], TO_ARABIC_NUMBERS[j].toString());//中文大写替换}try {result = new BigDecimal(big);} catch (Exception e) {result = BigDecimal.ZERO;}return result;}/*** 将一个数字处理为以万为单位的字符串,保留两位小数** @param num* @return*/public static String getTenThousandOfANumber(Integer num) {if (num < 10000) {return String.valueOf(num);}String numStr = new DecimalFormat("#.00").format(num / 10000d);String[] ss = numStr.split("\\.");if ("00".equals(ss[1])) {return ss[0] + "万";} else if ('0' == (ss[1].charAt(1))) {return ss[0] + "." + ss[1].charAt(0) + "万";} else {return numStr + "万";}}}

大写汉字转为阿拉伯数字相关推荐

  1. 将汉字转为阿拉伯数字(oracle函数方式)

    之前因公司业务需求,需要将录入的汉字自动转为阿拉伯数字存放到数据库中,网上有好多阿拉伯数字转为汉字的且正确的.但是汉字转为阿拉伯数字的却很少有正确的 .下面是正确的oracle函数,可正确转换汉字.( ...

  2. 经典Java题目:输入一个数字,输出它的大写汉字(阿拉伯数字转汉字)

    写在前面 无意间看到一个Java题目,觉得挺有意思,就拿出来和大家分享: 输入一个数字,输出它的大写汉字. 就像这样: 这算是一个有趣的题目了.但是早前我Java基础特别差就没能实现它. 当然,这次我 ...

  3. 大写汉字转阿拉伯数字c语言,阿拉伯数字转中文数字方法详解(C++实现)

    阿拉伯数字与中文数字没有一一对应关系,不存在直接转换的公式化算法,因此需要根据两种数字体系的特点精心构造转换算法. 中文计数有一个特点,就是"零"的使用变化多端.阿拉伯数字中数字的 ...

  4. 大写汉字转阿拉伯数字c语言,C# 将阿拉伯数字转换为大写中文的代码

    using System; namespace ConsoleApp { /// /// 阿拉伯数字到大写中文的转换 /// 未对非法数字进行判别 /// 请调用NumToChn方法 /// site ...

  5. js和ts两种 将 小写金额转中文大写汉字,阿拉伯数字金额格式化成中文大写汉字,数字金额转换成财务发票大写中文

    通过 npm i money2cn 安装  支持typescript 使用: import  money2cn  from 'money2cn' const nums = money2cn(23423 ...

  6. 大写汉字转阿拉伯数字c语言,阿拉伯数字转换成中文大写数字

    原创作者ACN站:3mile 如:550065转换成"五十五万零六十五"或"伍拾伍万零陆拾伍" 可作为UDF使用的. NUM2CWORD($number,$vV ...

  7. C语言阿拉伯数字转大写汉字,人民币阿拉伯数字转换为汉字大写 code

    一没技术含量,玩玩而已 using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...

  8. 阿拉伯数字转化为大写汉字

    本文为大一时所写的文章(2017/5/3),文笔还很生疏,在很多问题上认识不深,算是在学校的微信公众号上的一个编程探究模块上的投稿,本人当时也参与了本模块的维护和管理.补档. 首先向大家说一声抱歉,上 ...

  9. 致远表单函数自定义-groovy代码:阿拉伯数字转大写汉字

    在致远表单设计中,为实现将阿拉伯数字转为大写汉字,通过参考大神的算法和致远表单设计方法,将算法以groovy语言实现出来,下面作以分享: 算法思路:先将数字逐字转换为汉字数字和汉字单位,再将挨着个位. ...

最新文章

  1. Centos6.4下安装及配置FTP Server
  2. MariaDB 10.0 和 MySQL 5.6 有何不同
  3. flink介绍:有界流和无界流
  4. raise event when save - COM_PR_CHBADI_RAISE_WF_EVENT
  5. 计算机网络走向系统化 科学化,第六章计算机网络与INTERNET 应用习题
  6. 终端卡顿优化的全记录
  7. Bootstrap CSS 编程规范之语法规范
  8. (一)开始使用混合边缘AI进行面部识别
  9. python 列表有没有顺序_python-如何获取列表的所有顺序,以使该列表等于另一个列表?...
  10. OJ、ACM提交常见错误类型
  11. android graphic(15)—fence
  12. vc++6.0获取磁盘基本信息_微信小程序——常用功能2:微信小程序用户登录,申请用户授权并获取用户基本信息...
  13. 2013台式计算机,显卡天梯图 2013最新台式机显卡天梯图
  14. 模型☀️Catia模型到Unity的转化过程
  15. 高端物理学名词_物理名词大全
  16. 群晖迅雷套件1.7.2(支持DSM6.x和DSM7. X系统)
  17. TensorFlow调整超参数步骤
  18. 扒一扒有限元的那些书
  19. 如何在WORD2007中文档中,奇数页页眉是书名,偶数页页眉是章节。各章章节不同,请详细步骤!!!...
  20. 机器学习项目实战合集列表

热门文章

  1. [ 安装 ] MySQL安装步骤!
  2. 达梦数据库中注释的使用
  3. php 保留小数点两位不四舍五入 bcdiv()
  4. 中国宠物医疗市场产业消费需求及盈利前景预测报告(2022-2027年)
  5. 执笔写流年,焚纸闻墨香
  6. 【软件推荐系列第 3 篇】如何下载、设置时钟屏保
  7. java获取时间相差8小时的问题及解决方式
  8. 《那些年啊,那些事——一个程序员的奋斗史》十
  9. Android Selinux avc报错分析
  10. can和could的用法_情态动词:can与could的用法详解