java 数字转换人民币大写

代码

import java.text.DecimalFormat;
import java.util.Scanner;public class 浮点数转人民币 {public static final String ZERO = "零";public static final String YUAN = "元";public static final String WAN = "万";public static final String YI = "亿";public static final String ZHAO = "兆";private static final String[] CN_UNIT = {"角", "分", "元","拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "兆", "拾","佰", "仟"};public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (true) {System.out.println("请输入要转换的数字");try {processing(sc.nextDouble());}catch(Exception e){e.printStackTrace();}}}/*** 获取传入数据的小数点之前和之后的数字** @param money 输入要转换的金额* @return 数字的整数部分和小数部分*/public static String[] doubleToString(double money) {DecimalFormat df = new DecimalFormat("#.00");String moneyS = df.format(money); //四舍五入为整数// System.out.println(moneyS);String[] split = moneyS.split("\\.");System.out.println("整数部分:[" + split[0] + "]小数部分:[" + split[1] + "]");return new String[]{split[0], split[1]};}/*** 处理整数部分** @param digit 整数部分的字符串*/public static StringBuilder handleDigit(String digit) {int length = digit.length();if (length > 15) {throw new IllegalArgumentException("只支持15位数字");}char[] chars = digit.toCharArray();//转换为字节数组StringBuilder resultDigit = new StringBuilder(); // 存放结果StringBuilder resultNum = new StringBuilder(); // 存放数字转换为大写StringBuilder resultUnit = new StringBuilder();// 存放单位// 转换大写// 获取char[] 中的每个值并转为大写for (char aChar : chars) {String s = switchMach(aChar);resultNum.append(s);}// 遍历resultNum,从高位开始向低位遍历,并对应的获取位所在的单位for (int i = resultNum.length(); i > 0; i--) {resultUnit.append(CN_UNIT[i + 1]);}// 将对应的大写与对应的单位拼接在一起for (int i = 0; i < resultNum.length(); i++) {char c = resultNum.charAt(i);char c1 = resultUnit.charAt(i);resultDigit.append(c).append((c1));}// 处理零兆、零亿、零万、零仟、零佰、零拾、零零问题int index;while ((index = resultDigit.indexOf("零仟")) != -1) {resultDigit.replace(index, index + 2, ZERO);}while ((index = resultDigit.indexOf("零佰")) != -1) {resultDigit.replace(index, index + 2, ZERO);}while ((index = resultDigit.indexOf("零拾")) != -1) {resultDigit.replace(index, index + 2, ZERO);}while ((index = resultDigit.indexOf("零零")) != -1) {resultDigit.replace(index, index + 2, ZERO);}while ((index = resultDigit.indexOf("零万")) != -1) {resultDigit.replace(index, index + 2, WAN);}while ((index = resultDigit.indexOf("零亿")) != -1) {resultDigit.replace(index, index + 2, YI);}while ((index = resultDigit.indexOf("零兆")) != -1) {resultDigit.replace(index, index + 2, ZHAO);}while ((index = resultDigit.indexOf("亿万")) != -1) {resultDigit.replace(index, index + 2, YI);}while ((index = resultDigit.indexOf("零元")) != -1) {resultDigit.replace(index, index + 2, YUAN);}return resultDigit;}/*** 处理小数部分** @param decimal 传入小数部分*/public static StringBuilder handleDecimal(String decimal) {StringBuilder resultDecimal = new StringBuilder();for (int i = 0; i < decimal.length(); i++) {String switchMach = switchMach(decimal.charAt(i));String res = switchMach + CN_UNIT[i];resultDecimal.append(res);}return resultDecimal;}/*** 管理处理逻辑的方法* @param num 传入的浮点数*/public static void processing(double num) {String[] stringArr = doubleToString(num);// 处理整数部分StringBuilder sbDigit = handleDigit(stringArr[0]);// 处理小数部分StringBuilder sbDecimal = handleDecimal(stringArr[1]);String result = String.valueOf(sbDigit) +sbDecimal;System.out.println("[" + num + "]" + "转换为大写的结果为:[" + result + "]");System.out.println("----------------------------------------------------");}/*** 匹配大写** @param m 传入的位数上的数字* @return*/public static String switchMach(char m) {switch (m) {case '1':return "壹";case '2':return "贰";case '3':return "叁";case '4':return "肆";case '5':return "伍";case '6':return "陆";case '7':return "柒";case '8':return "捌";case '9':return "玖";case '0':return "零";default:return "错误";}}
}

输出

请输入要转换的数字
123456.78
整数部分:[123456]小数部分:[78]
[123456.78]转换为大写的结果为:[壹拾贰万叁仟肆佰伍拾陆元柒角捌分]
----------------------------------------------------
请输入要转换的数字

java 数字转换人民币大写相关推荐

  1. ORACLE数字转换人民币大写

    ORACLE 数字转换人民币大写 示例. 数字                    :183066999230.68 人民币大写        :壹仟捌佰参拾亿陆仟陆佰玖拾玖万玖仟贰佰参拾圆陆角捌分 ...

  2. java实现人民币数字转换中文大写的工具实例代码demo分享

    原文:java实现人民币数字转换中文大写的工具实例代码demo分享 http://www.zuidaima.com/share/1816208858221568.htm 刚好在项目里面用到了数字转化为 ...

  3. 使用 C# 将数字转换成大写人民币

    贴段最近在项目中用到的一个函数. 因涉及到财务,需要把数字符转换成大写人民币汉字,于是自己动手写了一个,使用的算法比较笨,各位看客不要笑啊. 可转换数字大小在10亿以下,超过的,就无能为力了,不过大家 ...

  4. 小写数字转换成大写数字

    前两天看到一道题,关于小写数字转换成大写的.也就是将"1023050405"这样的数字转换为"十亿二千三百零五万零四百零五". 这个是个算法问题,其它语言也是相 ...

  5. js 数字转人民币大写

    目前网上有许多的数字转人民币大写功能,但是在某些数字上就回出现错误, 比如501356,这个转换之后,有的会转换成 "伍拾万零壹仟叁佰伍拾陆" ,单位万和千紧密相连,中间是不需要 ...

  6. .net 将数字转换为人民币大写

    程序中用到将数字转换为大写人民币,在网上找了一个方法,记录下来. using System.Text; using System.Text.RegularExpressions; ///<sum ...

  7. 将(123)数字转换成大写数字(壹,贰,弎)

    此方法 将(123)数字转换成大写数字(壹,贰,弎) RMBUtils.toChineseUnit()

  8. C小程序-将输入的数字转换成大写汉字

    C小程序-将输入的数字转换成大写汉字C int money,count=0;int i=0;int moneys[6];//定义了输入数字的最高位数char unit[10][2]={"零& ...

  9. C#数字转人民币大写

    C#方法 废话不多说,直接上代码: /// <summary> /// 数字转换为大写人民币表示 /// </summary> /// <param name=" ...

  10. php人民币函数,PHP数字转人民币大写函数

    PHP数字转人民币大写函数2018-04-23 09:59 如果你是一位财务人员,肯定遇到过一个问题,就是遇到一串数字,要将其写成大写的人民币,有时很容易搞错. 那么有没有什么方法可以准确的解决呢? ...

最新文章

  1. iPhone nano 被取消是因为乔布斯看到了风向?
  2. Step1帐户登录系统(6.使用OpenID登录网站)
  3. Vijos P1103 校门外的树【线段树,模拟】
  4. 中文表示什么_越南水果摊贴出中文标语,看清文字内容后,中国游客:不再吃了...
  5. 【Python SQLAlchemy】数据库连接池SQLAlchemy中多线程安全的问题
  6. 适合小白了解学习的DevOps实践
  7. Spring和JSF集成:导航
  8. 论文浅尝 - ISWC2020 | KnowlyBERT: 知识图谱结合语言模型补全图谱查询
  9. snmp基本介绍--理解OID/MIB/snmp报文类型/snmp版本
  10. 每天CookBook之Python-003
  11. AI人工智能毕业设计课题:车牌识别,车牌识别系统,车辆识别系统
  12. QT自动检测系统语言代码
  13. [人月神话]读书笔记---人月神话的观点:是与非
  14. win11家庭版 安卓虚拟机
  15. [每日一氵]协方差矩阵计算
  16. blowfish算法c语言,Blowfish 算法工具(Blowfish Tool)
  17. 使用Java制作一个魂斗罗游戏
  18. 如何将eslipse的背景色变为暗黑色
  19. 关于双通道CANFD记录仪的视频介绍
  20. mysql sysdatabases_未能在 sysdatabases 中找到数据库 aa1xxxx 所对应的条目。没有找到具有该名称的条目...

热门文章

  1. 阿里云大学生领取免费ECS服务器——测试题答案
  2. android+键盘键值修改器,键盘按键修改器
  3. 简单明了的线程生命周期图
  4. SMB协议(445)
  5. C语言实战--DLL注入器
  6. 肿瘤(Oncology)生物信息学分析简介
  7. F28335学习之ADC配置
  8. python xlsxwriter 画图_python xlsxwriter创建excel图表的方法
  9. matlab数学实验二重积分的计算,matlab计算二重积分
  10. ||分享一些百度云下载不限速神器||