题目链接|取近似值

写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于 0.50.5 ,向上取整;小于 0.50.5 ,则向下取整。数据范围:保证输入的数字在 3232 位浮点数范围内

方法一:利用语言特性求解,输入加上0.5后取整

如果小数点后的数值大于0.50.5,那么加上0.50.5后比原数字+1+1大,取整后为原数的整数部分+1+1,即上整数;如果小数点后的数值大于0.50.5,由于c/c++的取整操作是取下整,所以取整后为原数字的整数部分。 时间复杂度: O(1)O(1),空间复杂度 O(1)O(1).

#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;
}

alt

方法二:对输入的浮点数的小数点后的第一位进行判断

截取输入的浮点数的小数点后的第一位进行判断。时间复杂度: O(1)O(1),空间复杂度 O(1)O(1).

alt

#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;
}