public classRmb {/*** 人民币的基本信息和操作

*

*@authorsoyoungboy

*@version1.0*/

private double number; //人民币的数量

private static final String[] hanArr = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};//汉字计数符号

private static final String[] unitArr = {"", "拾", "佰", "仟"};//汉字计数单位

private static final String[] unitArrs = {"万", "亿", "万", "兆", "万", "亿", "万", "圆"}; //顺序添加单位//private String[] unitsArr = {"万", "亿"};//汉字计数大单位

publicRmb() {

}/*** 构造器初始化人民币数量

*

*@paramnumber 给定的初始化人民币数*/

private Rmb(doublenumber) {this.number =number;

}/*** 把一个浮点数分解成long型部分和小数部分字符串,把人民币换成了整数,浮点数在取小数部分时临界值有误差

*

*@return返回分解后的字符串数组,第一个数组元素是整数部分,第二个是小数部分字符串*/

privateString[] divideNum() {double num = Math.round(number * 100);//对number进行四舍五入取整

long integerPart = (long) num; //连同小数点后两位取成整数 ,避免使用减法//double decimalsPart = num-integerPart;//小数部分,临界时产生了误差

String decimalsPartStr;long b = integerPart % 10; //小数点后第二位

long a = (integerPart / 10) % 10;//小数点后第一位

integerPart /= 100;if (a == 0 && b == 0) {

decimalsPartStr= null;

}else{

decimalsPartStr= "" + a +b;

}return newString[]{String.valueOf(integerPart), decimalsPartStr};

}/*** 把一个数字字符转换成汉语的人民币读法

*

*@return返回汉语人民币读法的字符串形式*/

privateString toHanStr() {

String[] results= new String[9]; //用来暂时存储每四位分段后的数字字符串

String[] resultStrs = new String[9];//用来暂时存储每四位分段后转换成的人民币读法

StringBuilder result = new StringBuilder();//最终的转换结果

String[] divideStr = divideNum(); //得到浮点数分解成的long型部分和小数部分字符串,第一个数组元素是整数部分字符串,第二个是小数部分字符串

results[8] = divideStr[1];for (int i = divideStr[0].length(), j = 8; i > 0 && j > 0; i -= 4, j--) {try{

results[j- 1] = divideStr[0].substring(i - 4, i);

}catch(Exception e) {

results[j- 1] = divideStr[0].substring(0, i);break;

}

}if (results[8] == null) {

resultStrs[8] = "整";

}else if (results[8].charAt(1) == '0') {

resultStrs[8] = hanArr[results[8].charAt(0) - 48] + "角"; //根据ASCII码和hanArr数组吧数字改成汉语大写

} else{

resultStrs[8] = hanArr[results[8].charAt(0) - 48] + "角" + hanArr[results[8].charAt(1) - 48] + "分";

}for (int i = 0; i < 8; i++) {if (results[i] != null) {

resultStrs[i]= "";

resultStrs[i]+= hanArr[results[i].charAt(0) - 48] + unitArr[results[i].length() - 1]; //根据ASCII码和数组长度选择数的单位

for (int j = 1; j < results[i].length(); j++)if (results[i].charAt(j - 1) == '0' && results[i].charAt(j) != '0')

resultStrs[i]+= "零" + hanArr[results[i].charAt(j) - 48] + unitArr[results[i].length() - 1 - j]; //根据ASCII码和数组长度选择数的单位

else if (results[i].charAt(j) != '0')

resultStrs[i]+= hanArr[results[i].charAt(j) - 48] + unitArr[results[i].length() - 1 -j];

}

}for (int i = 0; i < 8; i++) {if (resultStrs[i] != null) {

result.append(resultStrs[i]).append(unitArrs[i]);

}

}

result.append(resultStrs[8]);returnresult.toString();

}public static voidmain(String[] args) {doublel;byte[] bye = new byte[50];

System.out.println("请输入要转换的人民币数量:");try{

System.in.read(bye);

}catch(Exception e) {

e.printStackTrace();

}

String s= newString(bye);

l=Double.parseDouble(s);

Rmb r= newRmb(l);

s=r.toHanStr();

System.out.println(s);

}

}

JAVA浮点数转人民币读法_算法--java实现将数字转换成人民币大写(迅雷面试题)...相关推荐

  1. 数字转换成人民币大写格式(带界面)

    今天看了算法的公开课,有一个把数字转换成人民币大写的算法. 后面就想着自己写一个界面的,好几天没有写一个完整的程序的. 当然有一些BUG,没有时间优化,后面在慢慢优化. 自己的名言:每天努力一点儿,总 ...

  2. 浮点数字转换成人民币的大写字体

    新开博客,贴上一段平常时写的代码,权当记录和分享. 下面是代码块(有比较详细的注释,转换过程中需要注意的是0的处理): //浮点数字转换成人民币的大写字体 import java.util.Scann ...

  3. Java实现将数字转换成中文大写

    /** *程序功能:支持将仟亿数字转换成中文数字表示,如(110.12 转换成壹佰壹拾元壹角贰分) *算法思路:将数字,分成整数部分和小数部分(小数部分四舍五入到两位),分别进行转换,然后将转换后的结 ...

  4. 关于数字转换成人民币大写的问题

    我们在参与大型项目时,难免会遇到数值转换人民币大写的情况.因为我今天接触了一个这样的转换,但原代码存在BUG,转换经常出现问题.于是我就去网上搜索了相关资源.由于没有找到相对权威的转换代码,网上给出的 ...

  5. oracle数字转换成人民币大写

    网上找了好几篇博客,测试或多或少有问题,以下已验证可以使用. create or replace function cux_convert_cny(p_num in number default nu ...

  6. java 数字转大写_Java把数字转换成中文大写数字

    package com.chen.test; public class TestChinese { public static void main(String[] args) { System.ou ...

  7. 将15位数字转换成人民币金额

    直接上代码,每个步骤都有注释.难点在零的处理上. # 用字典变量x来保存0~9,和中文大写 x = {0:'零', 1:'壹', 2:'贰', 3:'叁', 4:'肆', 5:'伍', 6:'陆', ...

  8. 将数字转换成中文大写的算法

    //名称:ConvertSignCap   //参数:number   //返回:CapNumber   //描述:将传入的单个数字转换成中文大写形式   //创建人:刘权 2004-11-16    ...

  9. python数字转换成中文大写_python 人民币数字转大写中文

    def digital_to_chinese(digital): str_digital = str(digital) chinese = {'1': '壹', '2': '贰', '3': '叁', ...

最新文章

  1. ubuntu 16.04 多个python版本切换
  2. vba 修改access表的链接地址_VBA中常用的这7种数据类型,你都get到了吗?
  3. android图片的处理方法,android 处理图片到固定像素解决办法
  4. 企业网络推广网站排名首页但确保用户体验也是企业网络推广的关键
  5. Hive 基础-进阶
  6. 分享:Android程序员,必备精品网站大汇总
  7. 开发罪过_七大罪过与如何避免
  8. Windows下Java调用BAT批处理不弹出cmd窗口
  9. C语言课后习题(58)
  10. 个人电脑 公司电脑 代理_你们想要打造的树莓派电脑,刚发布了官方版:性能更强大,只卖70美元...
  11. jupyter 服务器 显示不完全,Jupyter中显示DataFrame的行显示不完全
  12. 第七章7.8示例学习:统计每个字母出现的次数
  13. 美国欲投 2.58 亿美元与中国争夺超算霸主地位
  14. 十天学会php 零基础,十天学会php:第一天
  15. linux安装硬盘安装教程,LINUX硬盘安装方法
  16. linux学习笔记(6)磁盘管理
  17. 世界上最强大的两个字母的单词
  18. 我的微信扫描二维码实现登录のJava
  19. rpm软件安装冲突:conflicts with
  20. java虚拟机线程调优与底层原理分析_啃碎并发(七):深入分析Synchronized原理...

热门文章

  1. 基于gpg的fwknop配置流程
  2. 简述同步和异步的区别
  3. Reactor模式:反应器模式
  4. adobe pdf 高级搜索功能
  5. ANTLR中文手册二(ANTLR 是什么)
  6. leetcode_middle_2_406. Queue Reconstruction by Height
  7. Eclipse clearcase plugin
  8. 新型冠状病毒实时动态
  9. 数字电路-04 触发器Flip-flop!
  10. 白盒测试junit实现三角形问题