gpt4 book ai didi

c++ - numeric_limits 中有错误还是我只是感到困惑?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:56:16 26 4
gpt4 key购买 nike

我在调试一些涉及确定加法运算是否会下溢 double 的代码时遇到了一些奇怪的行为,至少在我看来是这样。这是一个示例程序,展示了我的发现。

#include <iostream>
#include <limits>

using std::cout;
using std::endl;
using std::numeric_limits;

int main()
{
double lowest = numeric_limits<double>::lowest();
bool truth = (lowest + 10000) == lowest;
cout << truth << endl;
}

当我执行这段代码时,结果为真。这是错误还是我只是 sleep 不足?

最佳答案

最小的 double 是:

-1.7976931348623157e+308

如果 double 具有 300 位以上的精度,则向其添加 10,000 或 1e4 只会产生明显的效果,而它们肯定不会。 double 只能保留 15-17 位有效数字。

这两个数字之间的数量级差异如此之大,以至于将 10,000 相加不会产生新的数字。事实上,最小 double 值是如此巨大的数字(可以这么说),你可以向它添加一个googol——即 1 后面跟着一百个零——它不会'改变。

关于c++ - numeric_limits 中有错误还是我只是感到困惑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25779563/

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