写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。
输入一个正浮点数值
输出该数值的近似整数值
解题思路
首先将浮点数num分别向下和向上取整,得到两个整数num1和num2,然后比较num与num1和num2的平均值即可。在cmath头文件中,有向下取整函数floor和向上取整函数ceil。当然,将向下取整的值+1就等于向上取整的值。
需要注意的是,虽然题目中说输入的是正浮点数,但是C++并没有unsigned float类型。这是因为硬件不支持unsigned float。
代码
#include <iostream> #include <cmath> using namespace std; int main() { float num = 0; cin >> num; int num1 = floor(num); //向下取整 int num2 = num1 + 1; //向上取整 if (num >= (num1 + num2) / 2.0) cout << num2 << endl; else cout << num1 << endl; return 0; }