问题描述
写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于 0.5 ,向上取整;小于 0.5 ,则向下取整。
数据范围:保证输入的数字在 32 位浮点数范围内
输入描述:
输入一个正浮点数值
输出描述:
输出该数值的近似整数值
解题分析
本题涉及到一个知识点,当一个浮点型数据赋值给整型数据时,只能把整数部分赋值给整型数据。
如:flaot a=3.15; int b = a; 这时b = 3
所以我们判断小数点部分后的数就好判断了,直接用if语句判断(a-b)是否大于0.5,大于就打印(b+1),小于就打印(b)。
但是上述转化成代码的话,就显得太冗余了,毕竟这么简单的题目没必要这这么行。
接下来我给大家介绍两个简单方法
1、直接打印(a+0.5)
因为当小数大于0.5时,整数就+1、小于0.5时,就舍去小数。我们可以直接把浮点数a加上0.5,
再转转化成整型。这样就筛选大于0.5的小数
printf("%d", (int)(a + 0.5));
2、round库函数
round()函数是math标头的库函数,用于对最接近该数字的给定值进行四舍五入,一半的情况下舍入为零,它接受一个数字并返回四舍五入的值。
printf("%.0f\n", round(a));
代码实现
#include<stdio.h> #include<math.h> int main() { float num; scanf("%f", &num); printf("%d", (int)(num + 0.5)); printf("%.0f\n", round(num)); return 0;