【发布时间】:2022-11-20 15:30:00
【问题描述】:
当我执行此代码时,ans1、ans2 的值是50002896 和50005000。
我知道 ceil 函数存在一些问题,但无法找出确切原因。
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long ans1 = 0, ans2 = 0;
for (long long i = 1; i <= 10000; i++)
{
ans1 = ans1 + ceil((float)i / 1);
ans2 = ans2 + i;
}
cout << ans1 << " " << ans2 << endl;
}
【问题讨论】:
-
#include <bits/stdc++.h>——包括正确的头文件,而不是这个。 -
可能是因为
(float),而不是因为ceil。float不完全准确。 -
通过不使用适当的标准头文件,加上
using namespace std;的使用,不知道那个非标准头文件在拉什么,我们不知道它是 C 运行时库中的std::ceil还是ceil。这就是为什么使用bits...whatever不是一个好主意,更不用说它不是标准的了。 -
@RohanBari 如果您不包含正确的头文件,则无法保证编译。
标签: c++ c++11 floating-point ceil