最近看到一个把一个浮点数转化为汉字人民币的小题,感觉很有意思就去用java实现了一下,没想到没有想得那么简单,在网上搜了一下也不近人意,经过几次修改后,现在实现了,现在分享一下。

一、当输入一个浮点数后,我们要把它的整数部分和小数部分取出来。

二、然后把相应的整数、小数部分转化为汉字读法。

三、按照汉语的读法,不能存在零仟、零佰、零拾这样的读法但可以存在零万、零元等读法,这时候我们壹仟零佰零拾零陆圆把零佰、零拾这样的替换为零,变为壹仟零零陆圆,我们把连续为零零的替换为零就OK了。

  1. package test;
  2.  
  3. public class NumToRmb{
  4. private static String[] hangArr = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
  5. private static String[] unitArr = { "圆", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万", "拾", "佰" };
  6. private static String[] unitXiaoArr = { "分", "角" };
  7.  
  8. // 把一个浮点数分为整数和小数
  9. public static String[] divide(double num) {
  10. long zheng = (long) num;
  11. long xiao = Math.round((num - zheng) * 100);
  12. String[] arr = new String[] { String.valueOf(zheng), String.valueOf(xiao) };
  13. return arr;
  14. }
  15. // 把一个4位数转化为汉字
  16. public static String toHantr(double numStr) {
  17. if (numStr < 0) {
  18. System.out.print("请输入一个整数");
  19. }
  20. String[] arr1 = divide(numStr);
  21. // 得到整数部分
  22. String zheng = arr1[0];
  23. // 得到小数部分
  24. String xiao = arr1[1];
  25. String result = "";
  26. // 处理整数部分
  27. int numLen = zheng.length();
  28.  
  29. for (int i = 0; i < numLen; i++) {
  30. // 得到第i位的数值
  31. int num = zheng.charAt(i) - '0';
  32. // 数值的汉字表示
  33. result += hangArr[num] + unitArr[numLen - 1 - i];
  34. }
  35. // 处理小数部分
  36. int sumLen = xiao.length();
  37. for (int i = 0; i < sumLen; i++) {
  38. if (i > 2)
  39. break;// 只精确到后两位
  40. // 得到第i位的数值
  41. int xnum = xiao.charAt(i) - '0';
  42. // 数值的汉字表示
  43. result += hangArr[xnum] + unitXiaoArr[sumLen - 1 - i];
  44. }
  45. // //替换所有零拾,零百,零仟为零
  46. result = result.replaceAll("零拾", "零");
  47. result = result.replaceAll("零佰", "零");
  48. result = result.replaceAll("零仟", "零");
  49. //把零零替换为零
  50. if (result.indexOf("零零") != -1) {
  51. result = result.replaceAll("零零", "零");
  52. }
  53. result = result.replaceAll("零亿", "亿");
  54. result = result.replaceAll("零万", "万");
  55. result = result.replaceAll("零圆", "圆");
  56.  
  57. return result;
  58. }
  59. public static void main(String[] args) {
  60. System.out.print(toHantr(1213301.56));
  61. }
  62. }

人民币金额转化汉字的java写法的更多相关文章

  1. C#小写数字金额转换成大写人民币金额的算法

    C#小写数字金额转换成大写人民币金额的算法 第一种方法: using System.Text.RegularExpressions;//首先引入命名空间 private string DaXie(st ...

  2. 【转载】C#工具类:人民币金额转换为中文大写

    在涉及到金融业务这一块的系统设计中,时常能够遇到的情况是需要将阿拉伯数字的人民币金额自动转换为中文的大写金额.现在互联网上也有很多网站提供此类服务,只要你输入人民币的阿拉伯数字金额,输入后自动给你转换 ...

  3. ACM java写法入门

    打2017icpc沈阳站的时候遇到了大数的运算,发现java与c++比起来真的很赖皮,竟然还有大数运算的函数,为了以后打比赛更快的写出大数的算法并且保证不错,特意在此写一篇博客, 记录java的大数运 ...

  4. Python TIPS上一道关于人民币金额小写转大写的题

    人民币金额打印 题目链接:here.我发现我写的好复杂,但万幸编码还算符合人类,看了其他答案,感觉都是天书. #!/usr/bin/env python # -*- coding: utf-8 -*- ...

  5. 基于opencv将视频转化为字符串Java版

    基于opencv将视频转化为字符串Java版 opencv java  先上一个效果图吧 首先,弄清一下原理 我们要将视频转化为字符画,那么就需要获取画面的每一帧,也就是每一张图片,然后将图片进行转化 ...

  6. C# 使用TimeSpan秒数转化为时分秒的写法

    1.TimeSpan的生成方法 // 参数: // ticks: // A time period expressed in 100-nanosecond units. public TimeSpan ...

  7. java数字金额转化为中文金额

    public static String digitUppercase(double n){String fraction[] = {"角", "分"};Str ...

  8. java-汉字转化拼音(纯java)

    1.转换所有的拼音 import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Set; public cl ...

  9. 获取汉字拼音 Java

    两种方法:一个是使用btye数组,一个是引入jar包进行操作. 1. public class CharacterParser { private static int[] pyvalue = new ...

随机推荐

  1. 杂货&&心跳

    https://github.com/jsfront/month/blob/master/2016/201605.md https://github.com/abdmob/x2js https://l ...

  2. mahout基于Hadoop的CF代码分析(转)

    来自:http://www.codesky.net/article/201206/171862.html mahout的taste框架是协同过滤算法的实现.它支持DataModel,如文件.数据库.N ...

  3. python2.7 安装pypcap出错 pcap.h not found

    python安装pypcap的时候出错 通过不断百度+google找到解决方案 https://segmentfault.com/q/1010000007273835/a-10200000072756 ...

  4. MYSQL优化优化再优化!

    1.数据库设计和表创建时就要考虑性能 2.sql的编写需要注意优化 3.分区 4.分表 5.分库 .数据库设计和表创建时就要考虑性能 mysql数据库本身高度灵活,造成性能不足,严重依赖开发人员能力. ...

  5. layer.js 弹窗组件API文档

      基础参数 type title content skin area offset icon btn closeBtn shade shadeClose time id shift maxmin f ...

  6. Chrome 好玩的插件

    1 Lastpass : 用来把往各个网址的密码云端存储. 2 EditThisCookie  : 查看网页的Cookie 3 Postman Interceptor :  用来配合Postman 进 ...

  7. List集合去重的一些方法(常规遍历、Set去重、java8 stream去重、重写equals和hashCode方法)

    1. 常规元素去重 碰到List去重的问题,除了遍历去重,我们常常想到利用Set集合不允许重复元素的特点,通过List和Set互转,来去掉重复元素. // 遍历后判断赋给另一个list集合,保持原来顺 ...

  8. IOS中文本框输入自动隐藏和自动显示

    uilabe和UIText扩展方法 +(UILabel*)LabWithFrame:(CGRect)_rect text:(NSString*)aText textColor:(UIColor*)aC ...

  9. CE lua脚本

    CE递归遍历主界面控件 local fnGetSpace = function(n) local ret = "" ,n do ret = (ret .. "-" ...

  10. [抄]使用网页进行展示而非PPT

    会议.演讲离不开幻灯片,它可以有效地辅助演讲者进行表达.目前一些流行的工具,比如Windows平台上的PowerPoint.Mac平台上的Keynote等工具,使得幻灯片的制作变得简单.但是这些幻灯片 ...