华为OJ-007

取近似值

Posted by Shaun on April 11, 2018

题目描述

写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。

输入描述:

输入一个正浮点数值

输出描述:

输出该数值的近似整数值

示例1

输入

5.5

输出

6

算法实现

实现1
//思路1:使用if来做
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
    float x;
    while(cin>>x){
        int tmp=int(x);
        if(x-tmp>=0.5)
            cout<<tmp+1<<endl;
        else
            cout<<tmp<<endl;
    }
    return 0;
}
实现2
//思路2:+0.5后取整数部分
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
    float x;
    while(cin>>x)
        cout<<(int)(x+0.5)<<endl;
    return 0;
}
实现3
//思路3:使用math.h中的round函数
#include <iostream>
#include <math.h>
using namespace std;
int main(int argc, const char * argv[]) {
    float x;
    while(cin>>x)
        cout<<round(x)<<endl;
    return 0;
}

小结

第2种方法非常巧妙,第3种是用使用math.h中的round函数。