任意浮点值如何与无穷大相比较?

kiw*_*kiw 6 c++ floating-point c++11

基本上我想从一堆值中搜索最小(正)值,并需要一个默认值来与第一个值进行比较.天真的假设是,他们总是比较"小于"(除了NaNs,但我们不考虑那些),但我不太确定.

我正在使用该float类型,我认为可以安全地假设我的目标硬件实现了无穷大值.

这是一些示例代码:

auto leastValue = std::numeric_limits<float>::infinity();
for (auto i = something.begin(), e = something.end(); i != e; ++i)
{
  auto value = (*i)->GetValue();
  if (value < leastValue)
  {
    leastValue = value;
  }
}
Run Code Online (Sandbox Code Playgroud)

eta*_*ion 9

对于IEEE 754浮点数,除了NaN和无穷大,一切都小于无穷大.你有可能在你的平台上有那些.如果你是偏执狂,请检查numeric_limits<float>::is_iec559.如果您的平台碰巧不符合要求,请使用numeric_limits<float>::max(); 如果你的序列是非空的,它不会给你一个错误的结果.