gpt4 book ai didi

c++ - 为什么 std::isnan() 对于具有 NAN 值的双变量返回 false

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

我决定使用 NAN(也尝试过 std::numeric_limits::quiet_NaN())作为函数参数的默认值,但是当我尝试检查它使用 std::isnan,它返回 false。同时,使用 qDebug() 将值打印到控制台,我看到了 nan

我还尝试使用 x != x 规则检查 NAN。它适用于 NAN != NAN,但对于 x != x 却得到了 false

最后的尝试是在函数内部定义 NAN double 变量,并尝试使用这两种方法对其进行检查,但结果相同。

我不明白哪里出了问题。

例子:

double abc = NAN;
qDebug()<< abc << (abc != abc) << std::isnan(abc);

输出:

nan false false

最佳答案

我不知道我们在项目中使用了 -ffast-math。这就是导致问题的原因。感谢您的关注和评论。如果您使用的是 -ffast-math,则没有解决方案。你只需要寻找另一种方法来解决你的问题(没有 NAN)

关于c++ - 为什么 std::isnan() 对于具有 NAN 值的双变量返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50448437/

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