B2016 浮点数向零舍入

B2016 浮点数向零舍入

清涟呀 @ 2022-01-04 16:32:08

#include <iostream>
#include <iomanip>
#include <cmath>

using namespace std;

int main()
{
    float a;
    cin >> a;
    if(a>0)
        cout << floor(a) << endl;
    else
        cout << ceil(a) << endl;
    return 0;
}

运行只有60分,不知道哪错了,有没有大佬看一看,感谢


by MujicaSaki @ 2022-01-04 16:37:59

long long a;
cin>>a;
cout<<a;

by MujicaSaki @ 2022-01-04 16:38:59

去掉小数部分即可


by MujicaSaki @ 2022-01-04 16:39:06

@清涟呀


by 清涟呀 @ 2022-01-04 16:44:00

@QAQ__QWQ 如果我想在源代码基础上更改需要怎么样?


by Terrible @ 2022-01-04 16:49:53

@清涟呀

用double,题目说给出一个float变量,但实际上float精度可能不够。


by 清涟呀 @ 2022-01-04 17:17:43

@Terrible 也不对


by MujicaSaki @ 2022-01-04 17:22:24

@清涟呀

    double x;
    cin>>x;
    cout<<(long long)x;

这样差不多


by Qiaoqia @ 2022-01-04 17:36:17

@清涟呀 注意浮点数误差可能会使您输出 -0

如输入 -0.001,您将输出 -0 这显然是不对的,要解决这个问题,只需将取整函数强制转换成整形即可。

cout << (long long)floor(a);

上取整同理。


by Qiaoqia @ 2022-01-04 17:41:39

更正规的强制转换写法

std::static_cast<long long>(floor(a))

|