假设我正在评估a / b
,其中a
和b
都是浮点类型。
如果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++标准对此没有坚持),则可能会失败。如果在启用浮点优化的情况下进行编译,也会失败。