C++ 测试 double 是否为#INF

标签 c++ double nan

当某些 double 值为 NaN#INF 时,我想隔离行为。为了检测 NaN,我测试了

doubleVal != doubleVal

#INF 怎么样?当 doubleVal#INF 时,此测试是否为真?

最佳答案

当您确定它不是NaN 时,乘以 1. 怎么样?

http://ideone.com/97FNu

你也可以使用 isinfisnan ,但这些可能会产生一些开销,具体取决于它们的实现。

第三种选择是使用 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/

相关文章:

c++ - 如何获得系统语言环境支持的代码集列表?

c - 如何使用float、double和integer进行精确的温度转换?

javascript - JavaScript 中的 NaN 输出

javascript - || 的和 NaN 运算符。它们到底是如何运作的?

c++ - 如何根据C++版本选择函数实现

c++ - QMutex 需要读取变量

c++ - 追求者淘汰

java - 如何进行四舍五入以计算偶数小数值(例如,如果它是 2.25,则应四舍五入为 2.3 而不是 2.2)

android - 如何在 Android 中以有意义的形式显示 Float/Double

postgresql - 添加约束以防止表中出现 NaN