题解 | #取近似值#

取近似值

http://www.nowcoder.com/practice/3ab09737afb645cc82c35d56a5ce802a

题目的主要信息:

  • 输入一个正的浮点数,对它进行四舍五入取整

方法一:比较判断法

具体做法:

我们首先利用y=x/1y = x / 1y=x/1得到xxx的整数部分,如果xxx与整数部分的差值小于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)O(1),直接判断,常数之间
  • 空间复杂度:O(1)O(1)O(1),无额外空间

方法二:强制类型转换

具体做法:

利用C++自带的强制类型转化可以将float转换成int,但是默认是向下取整,因此我们要给数字加上0.5,因为如果它原本小数部分小于0.5,加上0.5向下取整也是四舍,但是如果它原本小数部分大于等于0.5,加上0.5以后向下取整就是五入了。

alt

#include<iostream>
using namespace std;

int main(){
    float x;
    cin >> x;
    cout << (int)(x+0.5) << endl; //强制类型转换
    return 0;
}

复杂度分析:

  • 时间复杂度:O(1)O(1)O(1),直接转换,常数时间
  • 空间复杂度:O(1)O(1)O(1),无额外空间
孤帆远影碧空尽 文章被收录于专栏

牛客网各类题单题解~

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-16 18:03
点赞 评论 收藏
分享
不对是145个人…嗯…&nbsp;大家都没发现秋招提前批来了嘛..笑死我了
牛客39712426...:投了也是浪费时间,之前投米实习,除了浪费我时间写笔试题没有任何反馈,懒得投了
26届校招投递进展
点赞 评论 收藏
分享
06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
我的简历长这样
点赞 评论 收藏
分享
昨天 12:41
已编辑
门头沟学院 Java
steelhead:不是你的问题,这是社会的问题。
点赞 评论 收藏
分享
评论
18
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务