假设我正在评估a / b,其中ab都是浮点类型。

如果b为零,则答案为-1。#IND。
b(和a)是否还有其他任何值会给我-1。#IND,或者是否正在检查非零b足以避免获得此结果?

可能不相关,但是我在用C++编写代码。

最佳答案

从C++ 11开始,您可以放心地执行计算,方法如下
std::isnan(x = a / b);
在C++ 11之前的版本中,您可能无法将结果与自身进行比较,

bool is_nan(double x)
{
    return x != x;
}

但是,如果您的编译器不使用IEEE浮点数(C++标准对此没有坚持),则可能会失败。如果在启用浮点优化的情况下进行编译,也会失败。

10-06 09:51