【问题标题】:Are C++ floats guaranteed to have infinity?C++ 浮点数是否保证无穷大?
【发布时间】:2011-05-13 01:13:29
【问题描述】:

在符合标准的 C++ 中,以下内容是否保证为真?

#include <limits>
std::numeric_limits<float>::has_infinity

【问题讨论】:

  • 好吧,当然不是,想出一个不同的“真”符号有什么意义。这种想法可能会永远占据一个人的脑海。
  • @Hans:可以保证true 用于float,但不能保证std::numeric_limits 的所有专业化。比较numeric_limits&lt;float&gt;::is_integer 保证为false 的事实,但并不意味着numeric_limits::is_integerfalse 的一种多余有趣的说法。特征类是模板元函数。
  • 显然史蒂夫考虑的时间更长了。

标签: c++ floating-point infinity


【解决方案1】:

我不是专家,但这不取决于is_iec559 的值吗,(测试一个类型是否符合 IEC-559 / IEEE-754 标准)?

【讨论】:

  • 你是对的,如果is_iec559 != false,那么存在无穷大 (18.2.1.2/33)。我相信你也是对的,否则就不必了。该标准包含字符串“infinit”的次数很少,我找不到的任何一个都提到浮点类型必须有一个。
【解决方案2】:

应该,假设您的库实现遵循 C++ 标准并使用具有无穷大的浮点数。

【讨论】:

  • float with inf 可以在没有任何库的情况下生成。
  • 没错,但问题似乎与库功能有关。
  • 问题不在于实现(“符合标准的 C++”)。此外,您的答案是重言式:假设它具有无穷大,则保证它具有无穷大。
  • 不,我的回答不是重言式。并非每个平台都使用具有无穷大的浮点数。因此,在某些情况下,数字特征可能是错误的。
猜你喜欢
  • 2021-07-02
  • 1970-01-01
  • 2017-11-06
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-12
  • 1970-01-01
相关资源
最近更新 更多