我想知道在C ++中使用正确且优雅的方法来检测浮点数是否普通。通过"普通浮点数",我指的是除了NAN或INF之外的double / float / long double类型。
答案 0 :(得分:3)
您可以查看Boost.Math。它定义了所有这些:
template <class T>
bool isfinite(T z); // Neither infinity nor NaN.
template <class T>
bool isinf(T t); // Infinity (+ or -).
template <class T>
bool isnan(T t); // NaN.
template <class T>
bool isnormal(T t); // isfinite and not denormalised.
自C ++ 11以来,它们也在<cmath>
中:std::isnan
,std::isinf
,std::isfinite
和std::isnormal
。
答案 1 :(得分:3)
std::isfinite()
将返回true
。
(编辑反映编辑问题)