在 C++ 中决定普通浮点数的代码? [复制]
Posted
技术标签:
【中文标题】在 C++ 中决定普通浮点数的代码? [复制]【英文标题】:Code for deciding ordinary floating point numbers in C++? [duplicate] 【发布时间】:2015-03-10 22:59:03 【问题描述】:我想知道在 C++ 中检测浮点数是否普通的正确且可能是优雅的方法。 “普通浮点数”是指除了 NAN 或 INF 之外的 double/float/long double 类型。
【问题讨论】:
@Drew 这是有道理的。我很抱歉。 除了好的答案之外,有限浮点数正是使条件x - x == 0
为真的那些,因为当您有充分的理由避免包含标题时。专家会将其视为成语,但非专家会感到恼火,因此请谨慎使用。
【参考方案1】:
std::isfinite()
将为 非 INF 或 NaN 的值返回 true
。
(已编辑以反映问题编辑)
【讨论】:
【参考方案2】:您可以查看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
。
【讨论】:
谢谢。 isfinite 是我一直在寻找的东西以上是关于在 C++ 中决定普通浮点数的代码? [复制]的主要内容,如果未能解决你的问题,请参考以下文章