将金额转换为中文大写
思路
  1. 判断符号,0则直接返回
  2. 数字去掉点
  3. 00结尾的要加’整’
  4. 循环,从后面每次取一个数位上的值直到最前面,
  5. 若是非零则加上对应的数值和单位
  6. 若是零,判断上一个是否为零,是,则不加’零’,若是个位上的需要加’‘元’若是万,亿,兆则要加上’万,亿,兆’,要排除出现’亿万和兆亿’(数值除以10000)
package com.szhiiso.fomp.common.utils;import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;import javax.swing.plaf.ViewportUI;import org.apache.xalan.templates.ElemAttributeSet;
import org.apache.xmlbeans.impl.xb.xsdschema.Public;
import org.junit.Test;import com.sun.media.jai.iterator.RectIterCSM;/*** 数据处理* * @author hwq* @date 2018年10月10日*/
public class MyDigitUtils {private static final String[] CN_UPPER_NUMBER = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };private static final String[] CN_UPPER_MONETRAY_UNIT = { "分", "角", "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾","佰", "仟", "兆", "拾", "佰", "仟" };/*** 将金额转换为大写中文* * @param money* @return*/public static String number2CNMoneyUnit(double money) {StringBuffer sbBuffer = new StringBuffer();BigDecimal bigDecimalMoney = BigDecimal.valueOf(money);int signum = bigDecimalMoney.signum();if (signum == 0) {return "零元整";}long number = bigDecimalMoney.setScale(2, BigDecimal.ROUND_HALF_UP).abs().movePointRight(2).longValue();int numIndex = 0;int numUnit = 0;boolean getZero = false;if (number % 100 == 0) {sbBuffer.append("整");number=number/100;numIndex = 2;getZero = true;} while (true) {if (number == 0) {break;}numUnit = (int) (number % 10);if (numUnit == 0) {if (getZero) {if (numIndex == 2) {sbBuffer.insert(0, "元");} else if ((numIndex - 2) % 4 == 0 && number % 10000 != 0) {sbBuffer.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);}}else {if(numIndex!=0){//最后一位不加零sbBuffer.insert(0, "零");}getZero = true;} else {sbBuffer.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);sbBuffer.insert(0, CN_UPPER_NUMBER[numUnit]);getZero = false;}number = number / 10;numIndex++;}if (signum < 0) {sbBuffer.insert(0, "负");}return sbBuffer.toString();}
}

测试

 public static void main(String[] args) {Random random=new Random();for(int i=0;i<50;i++) {double nextDouble = random.nextDouble()*Math.pow(10,CN_UPPER_MONETRAY_UNIT.length-5);System.out.print(BigDecimal.valueOf(nextDouble)+"----");System.out.println(MyDigitUtils.number2CNMoneyUnit(nextDouble));}

将金额转换为中文大写相关推荐

  1. 正则也很牛,把阿拉伯数字的金额转换为中文大写数字

    using System; using System.Text.RegularExpressions; class Program {   // 把阿拉伯数字的金额转换为中文大写数字   static ...

  2. Java 描述将数字金额转换为中文大写

    Java 描述金额转换(数字转换成中文大写)         解题思路:把每一位转换成对应的大写,然后在不足地方补零,最后加上相应单位. 代码如下: import java.util.Scanner; ...

  3. JS将数字金额转换为中文大写

    最近在做一个关于金额的票据显示,有部分需要将数字金额改为中文大写金额,下面给出具体实现的JS var changeMoney = function(n) {var fraction = ['角', ' ...

  4. 金额转换为中文大写格式

    package org.sz.basic; import java.text.DecimalFormat; public class ConvertMoney { private final stat ...

  5. 阿拉伯数字金额转换为中文大写

    function digitUppercase(n) {var fraction = ['角', '分'];var digit = ['零', '壹', '贰', '叁', '肆','伍', '陆', ...

  6. 将小写金额转换为中文大写

    CREATE FUNCTION [dbo].[f_num_chn] (@num numeric(14,2)) RETURNS varchar(100) WITH ENCRYPTION AS BEGIN ...

  7. Python:阿拉伯数字转换为中文大写数字(金额的读数规则)

    萌萌帮班里同学做了一个python的编程作业,正好回顾一下python基础知识,以下源码和思考过程,代码全部原创. IDE:pycharm python版本:python3.7 ''' 实验目的:在银 ...

  8. 将阿拉伯数字转换为中文大写数字 —— pyhton实现

    将阿拉伯数字转换为中文大写数字 -- pyhton实现 在银行的日常业务中,常常需要用到将阿拉伯数字转换为中文大写数字的 功能.这次实验将编写一个程序,将用户输入的阿拉伯数字代表的金额,转换为大写数字 ...

  9. 小写金额变中文大写和英文方法总结

    #region 变量申明         private static readonly String cnNumber = "零壹贰叁肆伍陆柒捌玖";         priva ...

最新文章

  1. Java 文件上传下载管理器(控制台)
  2. mysql replication
  3. JS权威指南阅读笔记
  4. cv2.error: opencv(4.4.0)_【从零学习OpenCV 4】图像金字塔
  5. uva 11892 - ENimEN(推理)
  6. 机器学习 --- 3. 贝叶斯怎么想?(转)
  7. 硬盘分区故障修复全攻略
  8. 【学习点滴】游戏后台开发-tx
  9. linux使用磁盘配额,linux磁盘配额使用
  10. 记录word的页码问题-页码分节、罗马数字页码
  11. 201871010126 王亚涛 《面向对象程序设计(java)》 第四周学习总结
  12. Candence学习篇(4)allegro软件中class 和subclass的概念
  13. 老鸟程序员才知道的一些事
  14. MySQL B+树 BTree原理、增删改(详细)
  15. 【尚硅谷_java基础】十五、网络编程
  16. js导出科学计数法_怎么让js不自动转换成科学计数法
  17. CAM 导入.rou钻孔文件时提示No header % found或者显示与实际尺寸偏差大
  18. 03 HTTP 协议
  19. VMOS虚拟机与Fiddler免root抓包(超简单解决抓包无网络问题)
  20. 销售高手的21堂课》 之 《富爸爸财务自由之路》12

热门文章

  1. 计算机电源用什么端子,三菱PLC电源端子的接线方法图解
  2. 微信小程序(.wxapkg)源码包解包的方法
  3. 国家版权中心软件著作权网站注册不了的bug修复
  4. Nature:剑桥大学的研究人员找到了终结新冠的新药了吗?
  5. CloudCompare编译las
  6. 元宇宙+教育,究竟是什么?学校可以怎么做?
  7. IDEA创建java项目并打包成jar包
  8. twitter验证_社交网络身份验证:Twitter和Facebook
  9. 关于IIS身份验证的方法
  10. android base64 转图片,Android 中 Base64 转换成 图片