package com.utils;import java.math.BigDecimal;/*** 中文金额转数字工具* @date 2019/7/19 13:44*/
public class ChineseAmountUtil {private static char[] cnNum = new char[]{'零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'};private static char[] unitArr = new char[]{'厘', '分', '角', '圆', '拾', '佰', '仟', '万', '亿'};/*** 中文金额转数字* @param chineseNumber 中文金额* @return*/public static BigDecimal chinese2Number(String chineseNumber) {BigDecimal result = new BigDecimal(0);int lastUnitIndex = 0, num = 0;chineseNumber = chineseNumber.replace("元", "圆");for (int i = 0; i < chineseNumber.length(); i++) {boolean isUnit = true;char c = chineseNumber.charAt(i);for (int j = 0; j < cnNum.length; j++) {// 是数字if (c == cnNum[j]) {// 数字值 = 索引num = j;isUnit = false;break;}}if (isUnit) {// 第一个就是单位,如:拾伍万圆整if (i == 0) {num = 1;}int unitIndex = getUnitIndex(c);BigDecimal unit = getUnit(c);if (unitIndex > lastUnitIndex) {result = result.add(new BigDecimal(num)).multiply(unit);} else {result = result.add(new BigDecimal(num).multiply(unit));}lastUnitIndex = unitIndex;num = 0;}}return result.setScale(2,BigDecimal.ROUND_DOWN);}private static int getUnitIndex(char c) {for (int j = 0; j < unitArr.length; j++) {if (c == unitArr[j]) {return j;}}return 0;}private static BigDecimal getUnit(char c) {double num = 0;int unitIndex = getUnitIndex(c);switch (unitIndex) {// '厘', '分', '角', '圆', '拾', '佰', '仟', '万', '亿'case 4:num = 10;break;case 5:num = 100;break;case 6:num = 1000;break;case 7:num = 10000;break;case 8:num = 100000000;break;case 3:num = 1;break;case 2:num = 0.1;break;case 1:num = 0.01;break;case 0:num = 0.001;break;default:break;}return new BigDecimal(num);}public static void main(String args[]) {String s1 = "壹万伍仟肆佰壹拾圆叁角伍分肆厘";String s2 = "捌万陆仟肆佰壹拾圆整";String s3 = "壹万伍仟肆佰壹拾元贰角捌分肆厘";String s4 = "拾壹亿壹仟万伍仟肆佰壹拾元贰角捌分肆厘";String s5 = "拾伍万圆";System.out.printf("%s = %6.2f\n", s1, chinese2Number(s1));System.out.printf("%s = %6.2f\n", s2, chinese2Number(s2));System.out.printf("%s = %6.2f\n", s3, chinese2Number(s3));System.out.printf("%s = %6.2f\n", s4, chinese2Number(s4));System.out.printf("%s = %6.2f\n", s5, chinese2Number(s5));}}

java实现中文大写金额转小写数字相关推荐

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

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

  2. 如何把大写金额变为小写数字_怎样将带有小数点的小写数字转化为大写

    Excel要将人民币小写金额转换成大写格式,将自定义格式类型中的"G/通用格式"改为G/通用格式"元"" 来实现.但在转换小数时却出现了问题,比如12 ...

  3. java实验——中文大写金额

    声明RMB人民币类如下,实现其中的成员方法 题目分析:最重要的是考虑如何转换整数金额.首先找到小数点的位置,将金额分为小数和整数部分分别处理.对于整数部分按亿,万,千四位一分进行处理.目前转换范围还存 ...

  4. 【C语言】小写数字金额转换成中文大写金额

    1. 更新说明 添加与 "零圆整" 等价的预先判断 (0 / 0. / 0.0 / 0.00 / . / .0 / .00) 修复了因使用函数 strdup 导致的内存泄漏 除去输 ...

  5. java实现数字金额转换中文大写金额

    直接贴代码吧! public class CnNumberUtils {private final static Logger logger = LoggerFactory.getLogger(CnN ...

  6. JAVA科学计数法,金额数字,转换为中文大写字

    网上看到别人的代码,觉得很好,收藏下来 网上其他人的代码大多是只能转换整数最多13位,一般转换方案都是下面两种(第一种看完都不想再当码农了,第二种看似挺好, 但是处理起来截取字符串麻烦,容易因规则太复 ...

  7. java 将中文数字转阿拉伯数字

    java 将中文数字转为阿拉伯数字 由于项目需求要将中文数字转为阿拉伯数字,找了一些博客有些不满足需求.于是参考了一些博客完成以下代码 /*** 中文数字*/private static char[] ...

  8. php 小写数字转换大写中文

    /**     *数字金额转换成中文大写金额的函数     *String Int  $num  要转换的小写数字或小写字符串     *return 大写字母     *小数位为两位     **/ ...

  9. 【Java】将阿拉伯数字金额转化为中文大写金额表示

    今天老师即兴布置了一个作业,将阿拉伯数字金额转化为中文大写金额表示,假设数字上限为小于10亿,可以支持2位小数,如: 100000001--壹亿零壹元整 100100011--壹亿零壹拾万零壹拾壹元整 ...

  10. java 大写金额_java实现整数转化为中文大写金额的方法

    这篇文章主要介绍了java实现整数转化为中文大写金额的方法,感兴趣的小伙伴们可以参考一下 在日常生活中,我们经常会将阿拉伯数字转化为中文大写的情况:"零", "壹&quo ...

最新文章

  1. SQL Server创建数据库和数据的增删改查
  2. 太监式的自主知识产权研发特色 (Z)
  3. python kivy ios_Kivy跨平台技术开发iOS
  4. 一图搞定ML!2020版机器学习技术路线图,35页ppt
  5. 关于前端学习和笔试面试的总结
  6. RabbitMQ消息队列入门篇(环境配置+Java实例+基础概念)
  7. 学习笔记_java8新特性
  8. 《Linux/Unix系统编程手册》源代码下载编译
  9. 单元测试、集成测试、系统测试的不同
  10. 亚洲前沿科技展望:人工智能与区块链的融合发展
  11. list保存到scv
  12. C++大写字母转小写字母
  13. Axure设计网页时,需要注意的尺寸设置。
  14. 基带信号与频带信号的基础认识
  15. 学习三极管的原理和作用
  16. BUUCTF:[DDCTF2018](╯°□°)╯︵ ┻━┻
  17. 外汇天眼:外汇走势图怎么看涨跌,怎么看外汇盘面走势图?
  18. Guns V3.0简介
  19. 独家揭开几项神秘SEO技术的猪八戒面纱
  20. ai人工智能算法工程师_与AI时代息息相关:阿里巴巴算法工程师指南

热门文章

  1. 永中office java_永中office怎么样?使用过的说一下感受如何?
  2. “什么?中东的土豪给我们 App 充了大钱!”
  3. 计算机设置鼠标关灯,老司机详解罗技鼠标怎样关闭灯光
  4. 用html设计前台界面,UI设计系列:WEB前端界面设计
  5. 学习帮——提高智商、改善记忆力的120种绝佳方法!
  6. 动力电池系统介绍(八)——继电器
  7. 2.11 数值分析: 事后误差估计和迭代改善
  8. 计算机自带的命令提示符,Windows 10上有十种打开命令提示符的方法,你知道多少...
  9. 获取chrome的network内容并选择下载其中的资源
  10. 7. 敏捷软件开发框架 - 极限编程XP