我在比较 C++、Visualstudio 中的 NAN 值时遇到问题。 我需要在我的代码中处理除以零。 如果我除以零,我想将 NAN 分配给结果。 稍后检查结果是否有 NAN。 但是 NAN 比较在稍后的时间点失败了,即使我如下分配 quiet_Nan()。
double d = std::numeric_limits<double>::quiet_NaN();
if( d == std::numeric_limits<double>::quiet_NaN())
{
cout<<" NAN ";
}
else
{
cout<<" Number";
}
我知道无法比较 float 值是否相等。我尝试在 d 和 quiet_Nan() 之间进行比较,并尝试使用 < 运算符将其与 float 进行比较。 我看到的帖子很少,但不知道如何比较双倍值。
如何知道double变量中是否存在NAN值?
最佳答案
我认为当前的标准库没有提供任何 is_nan 实现,您需要使用第 3 方库或自己滚动
可以比较浮点值是否相等,它很少有用,但这是它有用的地方之一,你想要的是这样的:
template <T>
bool is_nan(T d)
{
return std::numeric_limits<T>::has_quiet_NaN && d != d;
}
它会检查您的机器上是否有合适的 NaN 值,然后使用 NaN != NaN 为真这一事实!
boost 可能应该在某个地方提供这个?
关于c++ - 如何知道 double 变量中是否存在 NAN 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3521006/