题目的主要信息:
- 输入一个正的浮点数,对它进行四舍五入取整
方法一:比较判断法
具体做法:
我们首先利用y=x/1得到x的整数部分,如果x与整数部分的差值小于0.5,我们就输出 整数部分即可,但是如果差值大于了0.5,我们需要输出整数部分加1。
#include<iostream>
#include<cmath>
using namespace std;
int main(){
float x;
cin >> x;
int y = x / 1; //得到整数部分
if(x - (float)y < 0.5) //判断小数部分与0.5的大小
cout << y << endl; //四舍
else
cout << y + 1 << endl; //五入
return 0;
}
复杂度分析:
- 时间复杂度:O(1),直接判断,常数之间
- 空间复杂度:O(1),无额外空间
方法二:强制类型转换
具体做法:
利用C++自带的强制类型转化可以将float转换成int,但是默认是向下取整,因此我们要给数字加上0.5,因为如果它原本小数部分小于0.5,加上0.5向下取整也是四舍,但是如果它原本小数部分大于等于0.5,加上0.5以后向下取整就是五入了。
#include<iostream>
using namespace std;
int main(){
float x;
cin >> x;
cout << (int)(x+0.5) << endl; //强制类型转换
return 0;
}
复杂度分析:
- 时间复杂度:O(1),直接转换,常数时间
- 空间复杂度:O(1),无额外空间