题解 | #取近似值#

取近似值

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

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    float a;
    cin>>a;

    //todo 保证在32 位浮点数范围内不知道怎么写 [1]
    int a0=floor(a); 
    float a1=a-a0;

    if(a1<0.5)
        cout<<a0<<endl;
    else
        cout<<a0+1<<endl;

    return 0;
}
// 64 位输出请用 printf("%lld")

更简单的方法:

#include <iostream>
using namespace std;

int main() {
    float x;
    cin >> x;

    // 计算整数部分
    int ans = static_cast<int>(x);

    // 判断并调整结果
    if (x - ans >= 0.5) {
        ++ans;
    }

    // 输出结果
    cout << ans << endl;

    return 0;
}


  • 32位浮点数 (float): 存储大小为32位,精度约为7到8位有效数字,适合内存受限且不需要极高精度的应用。
  • 64位浮点数 (double): 存储大小为64位,精度约为15到16位有效数字,适合需要更高精度和更大范围的应用。
  • 题目要求: 输入数据在32位浮点数范围内,因此使用 float 是合适的。

[1] 如果你已经将 x 定义为 float 类型,并且题目保证输入的数字在32位浮点数范围内,那么通常不需要额外检查输入是否在32位浮点数范围内。这是因为:

  1. 类型匹配: 既然 x 已经是 float 类型,任何输入都会自动转换为 float 类型。
  2. 题目保证: 题目明确说明输入数据在32位浮点数范围内,因此不会有超出范围的情况。
全部评论

相关推荐

码农索隆:有点耳熟,你们是我教过最差的一届
点赞 评论 收藏
分享
线性袋鼠:别听牛客上一帮伪人在那说,小厂不能去,必须去大厂,听他们放屁吧。学院本+一些一本最终的归宿就是中小厂,大厂那么好进吗
我的实习日记
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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