package com.test;import java.math.BigDecimal;/*** * * 数字转换为汉语中人民币的大写<br>* */
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) {double money = 3000.66;BigDecimal numberOfMoney = new BigDecimal(money);String s = NumberToCN.number2CNMontrayUnit(numberOfMoney);System.out.println("你输入的金额为:【" + money + "】   #--# [" + s.toString()+ "]");}
}

转载于:https://www.cnblogs.com/sinosoft/p/10698179.html

Java货币金额转换为大写形式相关推荐

  1. 将数字货币金额转换为大写格式(java)

    基本思想: 将数字转化为字符串,以小数点为界限拆为:整数,小数点,小数,三各部分,各个部分转换为大写格式,最后拼接在一起.(主要运用了字符串的拆分,替换,转化) 1.导入的包 import java. ...

  2. java将货币转换为大写形式

    private static String DigitUppercaseStrings[] = new String[] { "零", "壹", "贰 ...

  3. 【Java】将数字金额转换为大写中文金额

    package com.ruoyi.test;import org.apache.commons.lang3.StringUtils;/*** @Title: ConvertUpMoney* @Des ...

  4. 将数字转换成中文金额的大写形式

    package com.unteck.fms.web.businessdata.controller; import org.springframework.beans.factory.annotat ...

  5. 数字金额转换为大写人民币汉字

    // 数字金额转换为大写人民币汉字convertCurrency (money) {// 汉字的数字var cnNums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', ' ...

  6. JS将数字金额转换为大写人民币汉字

    转载自 qubernet 博客 JS将数字金额转换为大写人民币汉字 function convertCurrency(money) {//汉字的数字var cnNums = new Array('零' ...

  7. JS人民币小写金额转换为大写(没毛病)

    /** * 人民币小写金额转换为大写 */ export const digitUppercase = (n) => {let fraction = ['角', '分'] let digit = ...

  8. oracle人民币转大写,Oracle 小写金额转换为大写

    在开发EBS的合同报表打印的时候需要将小写金额转换为大写. 如下是本人自己写的转换函数. 主要思路:先获取小数点位置,在区分整数与小数点处理,根据位数和数字组合读取金额. 最后再处理特殊显示部分. / ...

  9. js实现金额转换为大写

    /*** 金额转换,数字金额转换为大写金额* @param {String|Number} amt 输入金额(单位:元)* @returns {*}返回失败返回原amt*/ export const ...

  10. Java小写金额转换大写与金额比对(支持繁体大写金额)

    package com.gerrard.pmc.util;import java.util.HashMap; import java.util.Map;import org.apache.common ...

最新文章

  1. MATLAB寻址访问按什么优先,matlab笔记
  2. 《高阶Perl》——导读
  3. Linux上的free命令详解
  4. windows环境中利用NMake工具编译连接C++源代码
  5. 关于ExtJS3.0组件连接http://extjs.com/s.gif的问题
  6. [译] CSS 变量实现炫酷鼠标悬浮效果
  7. jQuery的同胞遍历
  8. python美多商城项目百度网盘_美多商城项目(七)
  9. 单片机原理及其应用——单片机控制8只发光二极管交替闪烁
  10. 计组之存储系统:3、主存与CPU的链接(字扩展、位扩展、字位扩展、74LS138)
  11. java小程序之学生信息_java小程序之学生信息录入界面
  12. PyCharm载入Anaconda环境
  13. python设置excel格式_Python使用xlwt写excel并设置写入格式
  14. photoshop基础图文教程:第一章 下载与安装
  15. Vlmcsd: 自建 KMS 激活服务器
  16. PHP 之建行龙支付 - 退款
  17. 英特尔居然也来搞GTA5美化MOD了……?
  18. 模拟京东快递单号查询
  19. python导包问题解决方案(一字千金)
  20. 产品读书《B端产品经理必修课:从业务逻辑到产品构建全攻略》

热门文章

  1. 184.部门工资最高的员工
  2. Reverse Integer(C++)
  3. hdu acm 1241
  4. 《TextRank: Bringing Order into Texts》
  5. 数据分析中会常犯哪些错误,如何解决? 三
  6. 数据库基础(5)1NF,2NF,3NF,BCNF 四大范式的定义和判别
  7. 详细介绍各种常见的分布
  8. Raki的读paper小记:Dark Experience for General Continual Learning: a Strong, Simple Baseline
  9. XXX required a bean of type ‘XXXXXXXX‘ that could not be found ,博客可帮忙找错
  10. matlab中找不到指定的模块,Matlab装好后启动提示找不到指定模块如何解决?很急...