public class NumberToCN {/*** 汉语中数字大写*/private static final String[] CN_UPPER_NUMBER = { "零", "壹", "贰", "叁", "肆","伍", "陆", "柒", "捌", "玖" };/*** 汉语中货币单位大写,这样的设计类似于占位符*/private static final String[] CN_UPPER_MONETRAY_UNIT = { "分", "角", "元","拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "兆", "拾","佰", "仟" };/*** 特殊字符:整*/private static final String CN_FULL = "整";/*** 特殊字符:负*/private static final String CN_NEGATIVE = "负";/*** 金额的精度,默认值为2*/private static final int MONEY_PRECISION = 2;/*** 特殊字符:零元整*/private static final String CN_ZEOR_FULL = "零元" + CN_FULL;/*** 把输入的金额转换为汉语中人民币的大写* * @param numberOfMoney*            输入的金额* @return 对应的汉语大写*/public static String number2CNMontrayUnit(BigDecimal numberOfMoney) {StringBuffer sb = new StringBuffer();// -1, 0, or 1 as the value of this BigDecimal is negative, zero, or// positive.int signum = numberOfMoney.signum();// 零元整的情况if (signum == 0) {return CN_ZEOR_FULL;}//这里会进行金额的四舍五入long number = numberOfMoney.movePointRight(MONEY_PRECISION).setScale(0, 4).abs().longValue();// 得到小数点后两位值long scale = number % 100;int numUnit = 0;int numIndex = 0;boolean getZero = false;// 判断最后两位数,一共有四中情况:00 = 0, 01 = 1, 10, 11if (!(scale > 0)) {numIndex = 2;number = number / 100;getZero = true;}if ((scale > 0) && (!(scale % 10 > 0))) {numIndex = 1;number = number / 10;getZero = true;}int zeroSize = 0;while (true) {if (number <= 0) {break;}// 每次获取到最后一个数numUnit = (int) (number % 10);if (numUnit > 0) {if ((numIndex == 9) && (zeroSize >= 3)) {sb.insert(0, CN_UPPER_MONETRAY_UNIT[6]);}if ((numIndex == 13) && (zeroSize >= 3)) {sb.insert(0, CN_UPPER_MONETRAY_UNIT[10]);}sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);sb.insert(0, CN_UPPER_NUMBER[numUnit]);getZero = false;zeroSize = 0;} else {++zeroSize;if (!(getZero)) {sb.insert(0, CN_UPPER_NUMBER[numUnit]);}if (numIndex == 2) {if (number > 0) {sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);}} else if (((numIndex - 2) % 4 == 0) && (number % 1000 > 0)) {sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);}getZero = true;}// 让number每次都去掉最后一个数number = number / 10;++numIndex;}// 如果signum == -1,则说明输入的数字为负数,就在最前面追加特殊字符:负if (signum == -1) {sb.insert(0, CN_NEGATIVE);}// 输入的数字小数点后两位为"00"的情况,则要在最后追加特殊字符:整if (!(scale > 0)) {sb.append(CN_FULL);}return sb.toString();}public static void main(String[] args) {while(true) {Scanner sc = new Scanner(System.in);   double money = sc.nextDouble();BigDecimal numberOfMoney = new BigDecimal(money);String s = NumberToCN.number2CNMontrayUnit(numberOfMoney);System.out.println("你输入的金额为:【"+ money +"】   #--# [" +s.toString()+"]");}}

复制直接可以用的

阿拉伯数字转中文大写的方法相关推荐

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

    最近的做项目中需要弄一个金额是阿拉伯数字转为中文大写的金额,自己偷懒了,就总结一下. 第一种方法相对复杂 private static readonly String cnNumber = " ...

  2. VB 阿拉伯数字转换为中文大写数值函数

    Private Function CChinese(StrEng As String) As String If Not IsNumeric(StrEng) Or StrEng Like " ...

  3. 阿拉伯数字和中文大写形式的相互转换

    将阿拉伯数字转化为中文大写是很简单很实用的功能,但由于0这个特殊数字的存在使得实现起来并非那么容易,实现这一功能的关键就是对0的正确处理.该程序是我几个月之前写成的,当时没有加注释,现在程序的实现细节 ...

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

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

  5. c#版的阿拉伯数字转中文大写,以及票据日期的写法

    前接上篇,阿拉伯数字转中文数字是蛮有意思的,最近又有新发现~现在更新一下以前的代码~ c#版的阿拉伯数字转中文大写,以及票据日期的写法 不废话,直接上代码,两个方法 阿拉伯数字转中文: private ...

  6. 阿拉伯数字 转换 中文大写

    阿拉伯数字 转换 中文大写 <?php class ToChineseNumber {private $money = "";private $cnynums = array ...

  7. Lua阿拉伯数字转中文大写数字

    function numberToString(szNum)---阿拉伯数字转中文大写local szChMoney = ""local iLen = 0local iNum = ...

  8. jq 数字转中文数字_阿拉伯数字 转换 中文大写

    阿拉伯数字 转换 中文大写 class ToChineseNumber { private $money = ""; private $cnynums = array(" ...

  9. 阿拉伯数字转中文大写

    //=============================阿拉伯数字转中文大写============================= function Chinese(num)  //将阿拉伯 ...

最新文章

  1. Citrix VDI实战攻略之五:vDisk配置
  2. JS获取元素高度宽度的问题
  3. 第10章:Shell基础
  4. 计算机图形学画圆和直线代码,计算机图形学作业(中点法画直线和八分画圆法).doc...
  5. zbb20171108 tomcat 性能优化
  6. .NET/C#程序开发中如何更优美地实现失败任务重试的逻辑?
  7. Java数组排序解码
  8. CE下基于Zylonite硬件平台的SD卡驱动开发
  9. Leetcode 82. Remove Duplicates from Sorted List II
  10. Android游戏的心跳效果
  11. Java继承_这10道Java面试题!大部分的人回答不出来
  12. mysql零碎问题合集
  13. Ubuntu18.04与deepin+nvidia-docker的构建与踩坑+puppeteer在docker中的使用
  14. oracle jdbc驱动jar包下载,oracle各个版本所需要的ojdbc jar驱动包以及版本对应关系...
  15. 038--想和权证恋个爱
  16. 上万条流行经典语录大全ACCESS数据库
  17. 读论文 Automatic generation and detection of highly reliable fiducial markersnunder occlusion
  18. 【大数据开发】SparkSQL——RDD、DataFrame、DataSet相互转换、DSL常用方法、SQL风格语法、Spark读写操作、获取Column对象的方式
  19. web漏洞之sql注入
  20. GDP、人口普查、结婚离婚等40+个社会科学数据集

热门文章

  1. jq获取span标签的赋值和取值
  2. 苹果开发者暂停支付收入
  3. Linux下识别NTFS格式的U盘
  4. tensorflow学习:定义变量
  5. HTML转图片或者HTML转PDF
  6. 算法85----手机九宫格
  7. 华为系统更新彻底卸载_华为手机系统更新好吗 华为手机系统更新方法
  8. 计算机word保存如何操作,电脑word怎么保存 在电脑上word打字怎么保存
  9. 实现短信验证码有效时间
  10. leaflet 画扇形