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. 以太网数据帧的报尾封装字段是什么_利用TCP/IP模型理解数据通信过程
  2. 子页面赋值给父页面:window.opener.document.getElementById
  3. oracle进程瞬间暴增,oracle goldengate ogg 源段传输进程lag延迟不断增加的原因?
  4. linux防火墙ddos,Linux iptables防火墙详解 + 配置抗DDOS***策略实战
  5. 各种流行编程语言的优缺点
  6. 计算机设备及维护招标公告,列“State”不属于表 。
  7. vue 指令 v-on 事件修饰符-自定义键盘事件
  8. HTML代码中中逗号和句号怎么写,逗号和句号的用法
  9. w10计算机右键管理,电脑右键新建菜单管理,win10右键新建菜单管理-
  10. Xenu软件检查网站死链接
  11. java扫雷初级代码_高分求一个运行在Eclipse环境下的java 扫雷游戏的初级代码 越小越好 越短越好 运行就好,就是初级就好了,...
  12. ANSYS经典界面保存单元解和节点解
  13. html和js基础功能代码备份
  14. 自动驾驶定位技术之争:融合定位才是出路
  15. 基于SpringBoot+jpa+Erupt的出入登记签到打卡系统
  16. 空间解析几何:圆柱面一般式方程的推导——已知中轴线和半径
  17. 矩阵的迹\矩阵的秩\伴随矩阵\共轭矩阵,基底、维数与秩,相对某个基底的坐标计算方法
  18. 新西兰计算机预科学费,新西兰预科留学费用详解
  19. 推荐个OCP视频,51cto网站尚观的资料还不错,支持下载
  20. 测试需要掌握的重点概念

热门文章

  1. Markdown 语法支持测试
  2. Note8 android 9 root,三星NOTE8国行 N9500 9.0 root N9500ZCS4DSD5 root 高级设置
  3. 2020保研夏令营之路——武大网安、北理计算机、中科院信工所六室
  4. freeswitch之G729转码操作配置详解
  5. 学习java之前应该先了解哪些知识?
  6. 手机app的性能测试工具——GT、、Emmagee
  7. 网易视频云:搜索意图识别浅析
  8. 智能手机串号IMEI码丢失(无效IMEI)解决恢复办法
  9. 条码打印软件如何批量导入图片和图片名称
  10. 12个不容错过的Vue UI 组件库