当某些 double
值为 NaN
或 #INF
时,我想隔离行为。为了检测 NaN
,我测试了
doubleVal != doubleVal
#INF
怎么样?当 doubleVal
是 #INF
时,此测试是否为真?
最佳答案
当您确定它不是NaN
时,乘以 1.
怎么样?
你也可以使用 isinf
和 isnan
,但这些可能会产生一些开销,具体取决于它们的实现。
第三种选择是使用 C 最大值宏(或等效的 std::numeric_limits
):
bool is_inf_or_nan(double x)
{
return !(x <= DBL_MAX && x >= -DBL_MAX);
}
关于C++ 测试 double 是否为#INF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10120609/