用java编写一个程序,将浮点数转换成人民币读法字符串
来源:互联网 发布:黑锐源码社区 编辑:程序博客网 时间:2024/04/28 17:56
题目出自李刚老师的《疯狂Java讲义(第二版)》第四章练习题2
编程思路:
先将浮点数乘以100,强制转换为long型整数(用int会出现数据溢出),然后用得到后的整数依次除以10的(i)次幂,得到该整数第(i+1)位的数值,然后将中文读法字符串和单位按顺序排好,根据一些判定条件,给出相应的转换。
此处要注意的有:
1.本程序只考虑万亿级,万亿以上不考虑在内(即最大为9999,9999,9999.99);
2.高位为零时不予输出,直到第一个不为零的位开始输出(如0009,9999,9999.99前3个0不输出);
3.低位连续出现两个或两个以上零时,只读一个,且要亿级、萬级、圆级要带上相应单位
(如9990,0999.99会输出九千九百九十萬零九百九十九元九角九分);
public class Num2RMB
{
//定义一个输入的double数据
public double input;
//定义中文数字数组
String[] chinese = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
//定义单位数组(单位按照位数从小到大来排序)
String[ ] unit = {"分","角","圆","拾","佰","仟","萬","拾","佰","仟","亿","拾","佰","仟"};
//定义一个构造器,初始化输入的double数据;
public Num2RMB()
{
input = 9900090090.4687;
}
//编写转化方法,思路,将该数乘以100,再除以10的i次幂,再取整,如果结果不为零,则加上结果和单位;
public void readInChinese(double input)
{
//此处a不能用int,会造成数据溢出,所用要用long,将double数乘以100,等到一个long数
long a = (long)(input*100);
int b;int count = 0;//用于记录当前位的上一位是否为0,默认亿亿位为0
for (int i=13; i>=0; i--)
{
b = (int)(a/Math.pow(10.0, i));//b=a/10的b所在位数减1次幂
if (b != 0)
{
a = (long)(a-b*Math.pow(10.0, i));//b不为0时,a=a去掉最高位数,为下一次转换做准备
System.out.print(chinese[b]+unit[i%14]);//输出数字和单位
}
else if (i%4 == 2 && i/2==1)//若b=0,则判断此位是否要输出圆
{
System.out.print(unit[i%14]);
count = b;
}
else if (i%4 == 2)//判断是否要输出亿或者萬
{
System.out.print(unit[i%14]+chinese[b]);
}
else if (count !=0)//判断是否要输出零
{
System.out.print(chinese[b]);//当b=0时,若count!=0,则输出chinese[0],即零
count = b;
}
else
{
//以上条件都不满足时,不打印
count = b;
}
}
}
//主程序入口,先创建对象,然后执行readInChinese方法
public static void main(String[ ] args)
{
Num2RMB n = new Num2RMB();
n.readInChinese(n.input);
}
}
新手入门,不对之处欢迎指正。
0 0
- 用java编写一个程序,将浮点数转换成人民币读法字符串
- 编写一个程序,将浮点数转换成人名币读法字符串(学习记录)
- 将一个浮点数转换成人民币读法字符串(java)
- 将一个浮点数转换成人民币读法字符串(java)
- java程序---将一个浮点数转换成人民币读法
- 将浮点数转换成人民币读法字符串
- Java实现浮点数转换成人民币读法字符串
- 疯狂Java练习题 将浮点数转换成人民币读法字符串
- Java小程序——将浮点数转换成人民币读法
- 浮点数转换成人民币读法字符串
- 浮点数转换成人民币读法字符串
- 将浮点数转换成人民币读法字符串(整数部分在12位以内)
- 实现浮点数转换成人民币读法字符串(Java)
- java实现浮点数转换成人民币读法字符串,希望大家多多指教!
- JavaSE014_数组之应用举例(实现浮点数转换成人民币读法字符串)
- 疯狂java讲义4.2--浮点数转换成人民币读法
- 浮点数转换成人民币
- 将浮点数转成人民币读法字符串
- bzoj2901: 矩阵求和
- TPCAST VIVE无线升级套件-HTC VIVE
- echarts的字符云显示错乱
- Linux常用命令(23)之RPM软件包管理
- react native下开发应用遇到的几个问题以及自己的解决办法
- 用java编写一个程序,将浮点数转换成人民币读法字符串
- MySQL Notifier: High Severity Error: Element *** was not found
- hdu 3516 Tree Construction (四边形不等式优化DP)
- 自定义View——Canvas之图片文字(转载)-7
- 明年目标
- PAT_乙级_1011_筱筱
- 设计模式介绍
- 使用sprinmvc+spring+mybatis整合的时ASM报错
- hibernate能否实现非主键一对一关联