除零以外的任何数除以-1。#IND

时间:2015-01-08 14:40:41

标签: c++ floating-point

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

如果b为零,则答案为-1。#IND。

是否有b(和a)的任何其他值会给我-1。#IND,或正在检查非零b是否足以避免得到这个结果?

可能不相关,但我用C ++编写。

2 个答案:

答案 0 :(得分:3)

从C ++ 11开始,您可以使用

中的内容自信地执行计算

std::isnan(x = a / b);

Pre C ++ 11,您可能会将结果与自身进行比较,

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

但如果您的编译器不使用IEEE浮点(C ++标准并不坚持),那可能会失败。如果在开启浮点优化的情况下进行编译,它也会失败。

答案 1 :(得分:1)

检查b!= 0,a和b都不必是NaNInfinite。然后你的部门将摆脱这些错误。但你仍然可以解决精确问题。