gpt4 book ai didi

c++ - 奇怪的 C++ float 错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:11:13 28 4
gpt4 key购买 nike

#include <iostream>
using namespace std;

int main()
{
cout.precision(32);

float val = 268433072;
float add = 13.5;

cout << "result =" << (val + add) << endl;
}

我正在用标准的 g++ main.cc
编译上面的程序并使用 ./a.out

运行它

然而,我收到的输出是,
结果=268433088

显然,这不是正确的答案..为什么会这样?

编辑:当使用 double 代替 float 时不会发生这种情况

最佳答案

您可以使用更简单的代码重现您的“ float 错误”

#include <iostream>
using namespace std;

int main()
{
cout.precision(32);
float val = 2684330722;
cout << "result =" << val << endl;
}

输出

result =2684330752

如您所见,输出与 val 的初始化值不匹配。

如前所述,浮点类型的精度有限。您的代码示例只是超出了该精度,因此结果四舍五入。这里没有“错误”。

关于c++ - 奇怪的 C++ float 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17495051/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com