用于在C ++中确定普通浮点数的代码?

时间:2015-01-13 03:33:06

标签: c++ floating-point nan

我想知道在C ++中使用正确且优雅的方法来检测浮点数是否普通。通过"普通浮点数",我指的是除了NAN或INF之外的double / float / long double类型。

2 个答案:

答案 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::isnanstd::isinfstd::isfinitestd::isnormal

答案 1 :(得分:3)

对于 INF或NaN的值,

std::isfinite()将返回true

(编辑反映编辑问题)