【问题标题】:Largest floating point value that can be squared可以平方的最大浮点值
【发布时间】:2020-10-30 09:55:54
【问题描述】:

我有一个函数接受可选的距离参数dist,但我的算法适用于平方距离。如果用户没有指定任何值,我希望dist 尽可能大。

Result foo(double dist = std::sqrt(std::numeric_limits<double>::max())) const;

上面的代码是安全的,还是会因为舍入错误而崩溃?使用(甚至)更丑陋的东西会更好吗

Result foo(double dist = std::sqrt(std::numeric_limits<double>::max() - 100)) const;

【问题讨论】:

  • 不确定您的算法是否可以使用它,但为什么不可以 std::numeric_limits&lt;double&gt;::infinity 呢?它会返回它比比较中的任何数字都大,并且当你平方它时它不会变得更糟。
  • 哦,我不知道我可以平方std::numeric_limits&lt;double::infinity。这正是我当时所需要的。谢谢!
  • 那就让我们来回答吧。
  • Re “它会返回它比任何数字都大”:∞ 是浮点数,它不大于自身。

标签: c++ floating-point precision numeric-limits


【解决方案1】:

如果你小心点,你可以使用std::numeric_limits&lt;double&gt;::infinity。它会在比较中做正确的事情,如果你平方它,它仍然是无限的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 2019-04-30
    • 2019-02-15
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多