题解 | #实现四舍五入#
实现四舍五入
https://www.nowcoder.com/practice/020a0cf673174d5795d97ae79cff59a0
#include <stdio.h>
int main()
{
int a;
float b;
scanf("%f",&b);
/* 简单理解思路: */
/*
浮点数转换成整形,向左取整(也就是去掉小数部分,保留整数)
四舍五入:这个题有点坑,还要比较负数
如果是整数肯定是小数部分大于0.5的取整,小于0.5的舍弃,利用转换特性可实现
即:加0.5即可,如:11.2 加0.5后变为11.7转换后还是11;
9.8 加0.5后变为10.3转换后为10;
一种极限特例:20.5加0.5后变为21.0转换后为21;
如果是负数再加0.5则会:
假设是-11.2 加0.5后变为-10.7四舍五入后为-10没问题,但如果是-11.7着变成 -11.2四舍五入后变成-11,按理说-11.7应该变成-12(带负号后数字越大,数值越小)
故如果是负数:则减0.5
*/
/* 直接比较 */
// if(b > 0)
// a = (b+0.5);
// else
// a = (b - 0.5);
/* 三目运算实现 */
if(b > 0)
{
a = (b+0.5);
a = a>b?a:b;
}
else
{
a = (b - 0.5);
a = a<b?a:b;
}
printf("%d\r\n",a);
return 0;
}
#C语言基础练习#C语言之旅 文章被收录于专栏
时光不负,未来可期。