标签: c++ floating-point
假设我正在评估a / b,其中a和b都是浮点类型。
a / b
a
b
如果b为零,则答案为-1。#IND。
是否有b(和a)的任何其他值会给我-1。#IND,或正在检查非零b是否足以避免得到这个结果?
可能不相关,但我用C ++编写。
答案 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都不必是NaN或Infinite。然后你的部门将摆脱这些错误。但你仍然可以解决精确问题。