题解|HJ7 取近似值
取近似值
https://www.nowcoder.com/practice/3ab09737afb645cc82c35d56a5ce802a?tpId=37&rp=1&ru=%2Fta%2Fhuawei&qru=%2Fta%2Fhuawei%2Fquestion-ranking&gioEnter=menu
写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于 ,向上取整;小于 ,则向下取整。数据范围:保证输入的数字在 位浮点数范围内
方法一:利用语言特性求解,输入加上0.5后取整
如果小数点后的数值大于,那么加上后比原数字大,取整后为原数的整数部分,即上整数;如果小数点后的数值大于,由于c/c++的取整操作是取下整,所以取整后为原数字的整数部分。 时间复杂度: ,空间复杂度 .
#include <cstdio>
#include <iostream>
using namespace std;
int main(void){
double num;
cin >> num;
int ans = (int)(num + 0.5); //c/c++取整是向下取证,
printf("%d", ans);
return 0;
}
方法二:对输入的浮点数的小数点后的第一位进行判断
截取输入的浮点数的小数点后的第一位进行判断。时间复杂度: ,空间复杂度 .
#include <cstdio>
#include <iostream>
using namespace std;
int main() {
float num;
cin >> num;
int n = (int) num ;
int dec = (int)(num * 10) % 10;
if (dec >= 5) {
n = n + 1;
}
printf("%d\n",n);
return 0;
}