根据以上题目,我们可以先分析四舍五入的原理,以及正负数分别如何四舍五入
正数例如10.5 ,10.6 都是需要可以四舍五入变成11的,他们也有一个共同点就是 正数加上0.5后得到的数 大于等于 整数部位加1 就可以实现四舍五入(看不懂看下文解释)
可能有的宝子不懂,简单来说就是 ( 10.5 ➕ 0.5 大于等于 11 ,即可以四舍五入变为 整数11 )
首先我们可以把 任意数字 中的整数部位提出来
其次我们可以写出以下代码(正数情况)
那么负数的四舍五入跟正数相反即可,即 负数减去0.5后得到的数小于等于整数部位减1,就可以达成四舍五入(看不懂看下文解释)
简单来说就是( –10.5 ➖ 0.5 小于等于 –11,即可四舍五入 变为整数 –11 )
接着我们可以写出以下代码(负数情况)
有的宝子可能会想到,那0该怎么办,其实0的话只需要在判断是负数还是正数时 ≥0 或者 ≤0 就可以了,无论怎样都只会输出0
最后总结的代码就是
#include<stdio.h>
int main()
{
double a = 0.0;
scanf("%lf",&a);
double b = a; //让b=a
int c = (int)b; //使a中的整数赋给c (即提出a中的整数部位)
//注:这里不使用(int)a 的原因是,强制转换(int)后,b的值会废掉,若用a,a就会废掉
if(a>=0){ //正数四舍五入的情况
if(a+0.5>=c+1){ //正数+0.5>=整数部位+1
printf("%d",c+1); //四舍五入后的整数
}else{
printf("%d",c); //没四舍五入时的整数
}
}
if(a<0){ //负数四舍五入的情况
if(a-0.5<=c-1){ //负数-0.5>=整数部位-1
printf("%d",c-1); //四舍五入后的整数
}else{
printf("%d",c); //没四舍五入时的整数
}
}
}
创作不易,点点关注,感谢支持!!!