2019独角兽企业重金招聘Python工程师标准>>>

    /** 金额单位(整数) */private final static String[] PRCE_UNIT = new String[] {"仟", "佰", "拾", "兆", "仟", "佰", "拾", "亿", "仟", "佰", "拾", "万", "仟", "佰", "拾", "圆"};/** 大写数字 */private final static Map<String, String> UPER_NMBR = new HashMap<String, String>();/** 大写数字初始化 */static {// 零UPER_NMBR.put("0", "零");// 壹UPER_NMBR.put("1", "壹");// 贰UPER_NMBR.put("2", "贰");// 叁UPER_NMBR.put("3", "叁");// 肆UPER_NMBR.put("4", "肆");// 伍UPER_NMBR.put("5", "伍");// 陆UPER_NMBR.put("6", "陆");// 柒UPER_NMBR.put("7", "柒");// 捌UPER_NMBR.put("8", "捌");// 玖UPER_NMBR.put("9", "玖");}/*** 中文金额大写转换处理。<br/>** @param nmbr 被转换金额* @param unitLgth 单位长度<br/>(2:拾;3:佰;4:仟:5:万;6:拾万;7:佰万;8:仟万:9:亿;10:拾亿;11:佰亿;12:仟亿:13:兆; 以外:圆)* @param String - 大写金额*/public final static String fmatPrceUperCN(String nmbr, int unitLgth) {// 不截取小数位数据转换final String chgeNmbr = LCSUtil.paseBigDcml(nmbr, "0", -1).toString();// 圆金额单位标识final boolean yuanUnitFlag = (unitLgth < 2 || unitLgth > 13);// 整数、小数截取final String[] nmbrMatx = chgeNmbr.split("\\.");// 整数部分String befo = nmbrMatx[0];// 小数部分String aftr = null;// 小数部分存在判断if (nmbrMatx.length > 1) {// 存在时,初始化小数位aftr = nmbrMatx[1];}// 整合结果对象初始化final StringBuffer mony = new StringBuffer();// 金额String prce = null;// 单位String unit = null;// 整数部分金额存在判断if (!LCSUtil.isEmpty(befo)) {// 起始位置int begnIndx = PRCE_UNIT.length - befo.length();// 整数部分遍历for (int i = 0, l = befo.length(); i < l; i++, begnIndx++) {// 金额prce = befo.substring(i, i + 1);// 单位unit = PRCE_UNIT[begnIndx];// 是否数字零if ("0".equals(prce)) {// 零时的特殊逻辑处理if ("兆".equals(unit) || "亿".equals(unit) || "万".equals(unit) || "圆".equals(unit)) {// 零结尾判断if (mony.lastIndexOf("零") == (mony.length() - 1)) {// 零时,剔除该字符if (mony.length() > 0) {// 部分金额存在时,剔除最后一个字符零mony.replace(mony.length() - 1, mony.length(), "");} else {// 不存在时,即零圆mony.append("零");}}// 单位累计mony.append(unit);} else if (mony.lastIndexOf("零") != (mony.length() - 1)) {// 非零结尾时,追加零字符mony.append("零");}} else {// 上记以外时,正常金额单位累计mony.append(UPER_NMBR.get(prce).concat(unit));}}}// 圆金额单位标识判断if (!yuanUnitFlag) {// 非圆金额单位时,圆单位结尾条件判断if (mony.lastIndexOf("圆") == (mony.length() - 1)) {// 剔除最后一个金额单位mony.replace(mony.length() - 1, mony.length(), "");}}// 圆金额单位标识判断if (yuanUnitFlag) {// 圆金额单位时,小数位存在判断if (LCSUtil.isEmpty(aftr) || aftr.startsWith("00") || "0".equals(aftr)) {// 无小数位或零结尾时,整数金额存在判断if (mony.length() > 0) {// 存在时,整金额字符追加mony.append("整");}} else {// 小数位if (aftr.length() > 1) {// 分值是否为零判断if ("0".equals(aftr.substring(1, 2))) {// 为零时,即角单位值mony.append(UPER_NMBR.get(aftr.substring(0, 1)).concat("角"));} else if ("0".equals(aftr.substring(0, 1))) {// 为零时,即分单位值mony.append("零".concat(UPER_NMBR.get(aftr.substring(1, 2))).concat("分"));} else {// 角单位值mony.append(UPER_NMBR.get(aftr.substring(0, 1)).concat("角"));// 分单位值mony.append(UPER_NMBR.get(aftr.substring(1, 2)).concat("分"));}} else if (aftr.length() > 0) {// 角单位值mony.append(UPER_NMBR.get(aftr.substring(0, 1)).concat("角"));}}} else if (!LCSUtil.isEmpty(aftr)) {// 非圆金额单位,且存在小数位时,分隔符点设置mony.append("点");// 小数位信息转换for (int i = 0, l = aftr.length(); i < l; i++) {// 数字大写转换mony.append(UPER_NMBR.get(aftr.substring(i, i + 1)));}}// 圆金额单位标识判断if (!yuanUnitFlag) {// 结尾是否为零判断while ("零".equals(mony.substring(mony.length() - 1))) {// 剔除最后一个数字零处理mony.replace(mony.length() - 1, mony.length(), "");}// 剔除小数位后的零之后,判断是否仍存在小数位if ("点".equals(mony.substring(mony.length() - 1))) {// 无小数位时,剔除最后一个分隔符点处理mony.replace(mony.length() - 1, mony.length(), "");}// 非圆金额单位时,金额单位设置switch (unitLgth) {case 3: // 3:佰mony.append("佰圆");break;case 4: // 4:仟mony.append("仟圆");break;case 5: // 5:万mony.append("万圆");break;case 6: // 6:拾万mony.append("拾万圆");break;case 7: // 7:佰万mony.append("佰万圆");break;case 8: // 8:仟万mony.append("仟万圆");break;case 9: // 9:亿mony.append("亿圆");break;case 10: // 10:拾亿mony.append("拾亿圆");break;case 11: // 11:佰亿mony.append("佰亿圆");break;case 12: // 12:仟亿mony.append("仟亿圆");break;case 13: // 13:兆mony.append("兆圆");break;default: // 2:拾mony.append("拾圆");break;}// 整合结果后,判断是否仍存在小数位if (mony.indexOf("点") < 0) {// 无小数位时,整金额结果结尾mony.append("整");}}//        // 调试日志
//        System.out.println("金额: ".concat(chgeNmbr).concat("\t大写:").concat(mony.toString()));// 大写金额返回return mony.toString();}以上源码版权归 LvCreator 所有,仅供参考使用...

转载于:https://my.oschina.net/lvcreator/blog/397089

中文金额大写转换处理相关推荐

  1. mysql金额数字转成中文_数字金额大写转换(可以处理整数,小数,负数)

    数字金额大写转换(可以处理整数,小数,负数) 代码 //数字金额大写转换 function upDigit(n) { var fraction = ['角', '分']; var digit = [' ...

  2. 在英文版的excel中把数字转换成中文金额大写

    用VBA自定义一个大写金额转换的函数,在公式中输入此函数名就可以了. 具体方法:按 Alt+F11 ,在VBA编辑器菜单中点 插入→模块,将下面的函数复制到插入的模块当中, '============ ...

  3. Java版 数字金额大写转换

    需求:读入一个浮点数值,将其转化为中文金额的大写形式.如123.45,转化为:壹佰贰拾叁元肆角伍分. 以下是各种情况要完善: 1. 当金额为整数,只表示整数部分,省略小数部分,并添加"整&q ...

  4. 大数值金额大写转换(C语言)

    关于大数值金额大写转换,在财务管理的应用方面没什么意义.一般来说,千亿级,万亿级的数值就够了.因为在国家级层面是以亿为单位的,也就表达为千万亿,万万亿.在企业层面数值金额转换设置到千亿.万亿就行了.大 ...

  5. 数字金额大写转换Java工具类

    Mark一下: 摘取自 若依框架com.hanhua.common.core.text.Convert /*** 数字金额大写转换 先写个完整的然后将如零拾替换成零** @param n 数字* @r ...

  6. [收藏|转贴]货币金额大写转换库(C#)

    货币金额大写转换库 http://www.vckbase.com/bbs/prime/viewprime.asp?id=576 // 货币金额大写转换库   Money2String.dll // 静 ...

  7. JAVA----数字金额大写转换

    数字金额大写转换 先写个完整的然后将如零拾替换成零 public class NumUtils { /*** 数字金额大写转换* @param n 数字* @return 中文大写数字*/public ...

  8. 【Java】ChineseCurrencyUtils(货币金额大写转换工具类)

    货币金额大写转换工具类 import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalForm ...

  9. python unicode编码转换中文_python unicode转中文及转换默认编码

    一. 在爬虫抓取网页信息时常需要将类似"\u4eba\u751f\u82e6\u77ed\uff0cpy\u662f\u5cb8"转换为中文,实际上这是unicode的中文编码.可 ...

最新文章

  1. python 画图 内存-python的内存分析和处理
  2. Redis设置值并设置过期时间
  3. linux pmap命令,Linux pmap 命令用法详解-Linux命令大全(手册)
  4. 【计算机组成原理】定点运算器的基本结构
  5. Java版二叉树遍历,查找,顺序化存储代码实现
  6. 马云:希望下辈子能做个好女人,男人离开女人“啥都不是”
  7. numeric.js
  8. 区块链网络安全平台Hapi Protocol将在Poolz上进行 IDO
  9. 高等数学(第七版)同济大学 习题5-2 个人解答
  10. 一文读懂Faster RCNN(大白话,超详细解析)
  11. lcx端口转发及远程终端问题
  12. 42道计算机网络面试高频题+答案,面试官喜欢的答案都在这里
  13. 用 Java 实现梯度下降,看这篇就对了!
  14. JavaScript实现逆波兰式
  15. Appium+python实现App自动化登录
  16. 星期几—YYYY-MM-DD,表示一个日期,你知道是星期几吗?
  17. 密码 加盐处理 是什么
  18. context 的用法是什么?(数据之间的跨组件交互传递)
  19. 陀螺仪加速度计MPU6050程序与校准方法
  20. CCNA实验二十四 路由更新的安全

热门文章

  1. 摆地摊创业赚钱完全详细攻略
  2. 币圈“水逆”,暴跌与高危漏洞
  3. 在Simulink中创建库
  4. 结合项目实例 回顾传统设计模式(九)迭代器模式
  5. IDEA 2017 安装后 关联SVN
  6. 每个人都应该知道的25个大数据术语
  7. 《Pro ASP.NET MVC 3 Framework》学习笔记之十六【示例项目SportsStore】
  8. zabbix自动发现oracle表空间并监控其使用率
  9. 【朱-刘算法】【最小树形图】hdu6141 I am your Father!
  10. ApacheCommons的Java公共类库(实现如Log这些功能)