想把这个代码留下来的原因是,在这个代码的编写过程中,遇到了小数转化为整数的问题。在此简单总结一下:
【1.直接把小数部分抹去:】
in a;
double b;
b=2.4; // b=2.6;
a=b;
在这种状况下,a的值是2.如果b的值是2.6,即小数部分大于0.5的话也是如此。
【2.小数部分四舍五入】
int a;
double b;
b=2.4; // b=2.6
a=(b+0.5); //a=(int)(b+0.5);
如果 b 是 2.4 的话,a 的值就是 2,但是如果 b 是 2.6 的话,a 的值就是 3;
下面解释一下为什么是加上 0.5 呢?
因为在从字符型变量到整形变量的隐式转换时,程序自动将后面的小数抹掉,无论是大于还是小于0.5,但是如果加一个0.5的话,原本大于0.5的就会在整数部分加 1,从而实现“五入”,而小数部分小于 0.5 的话。即使加上 0.5,也没有改变整数部分的个位数,所以在转化时被抹掉 ,实现“四舍”。
【3】.还有一种是,例如,每五分钟进行一次变化,小于五分钟则不变,就像是寄快递,低于一公斤不多收费,大于一公斤的每公斤收取某一定的费用,这样的话,你必须得知道你的快递是超了几个一公斤,一公斤不太直观,我们可以假设是五公斤的增幅,每五公斤增加十块钱的费用,那么你就必须知道你的快递,多出了几个五公斤,这样用用到了下面的方法:
int a;
a=16;
in b;
b=16/5;
“/”是只保留整数部分的除法,结果是一个整数
“%”是一个取余数的除法,结果是除法中的余数。
拓展一下说,将一个大数的每个位上的数按顺序输出的话,就需要这个两个除法了。
例如:
12345
按顺序输出的话,就是‘1’,’2‘,’3‘,’4‘,’5‘;
12345%10=5;
12345/10=1234;
1234%10=4;
1234/10=123;
123%10=3;
123/10=12;
12%10=2;
12/10=1;
1%10=1;
1/10=0;
【代码示例】
下面是一个运用到小数舍去的实例: