【发布时间】: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<double>::infinity呢?它会返回它比比较中的任何数字都大,并且当你平方它时它不会变得更糟。 -
哦,我不知道我可以平方
std::numeric_limits<double::infinity。这正是我当时所需要的。谢谢! -
那就让我们来回答吧。
-
Re “它会返回它比任何数字都大”:∞ 是浮点数,它不大于自身。
标签: c++ floating-point precision numeric-limits