使用数组的应用举例
2017-07-13 16:33
183 查看
需求:需要将一个浮点数转换成人民币读法字符串。
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);
}
}
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);
}
}
相关文章推荐
- 数组的应用举例及二维数组的声明使用
- 函数指针数组的应用,但在类内作为成员使用,需要特殊处理,指针类型要匹配
- 使用DOS命令如何操作Windows防火墙(命令介绍及应用举例)
- objective-c 中isMemberOfClass的使用举例isKindOfClass的应用举例
- Android应用资源的使用方法(数组、颜色、尺寸、字符串、布尔、整数)
- isMemberOfClass的使用举例isKindOfClass的应用举例
- 编程典型代码错误举例:关于数组的下标使用
- 路由器防火墙应用举例――如何限制内网使用QQ
- (队列的应用5.3.2)POJ 2259 Team Queue(队列数组的使用)
- C语言学习10:结构体,结构体应用,联合用法,枚举,fopen函数使用,fseek,ftell的作用和文件结束符EOF,数组和文件交换数据,个人信息管理。
- 数组应用举例
- LSH应用:根据现有数组去mongodb中去数组 然后使用LSH算法计算数组相识度
- C++_数组的使用简单举例_输入与输出
- awk数组使用举例
- (队列的应用5.3.2)POJ 2259 Team Queue(队列数组的使用)
- List、Set、Map、数组遍历应用举例
- 使用DOS命令如何操作Windows防火墙(命令介绍及应用举例) .
- 加强eclipse的使用技巧。可变参数。基本数据类型自动装箱和拆箱。枚举。反射。数组反射的应用。ArrayList和HashSet。JavaBean
- 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组
- 140822●数组及应用举例