首页 > 解决方案 > 可以平方的最大浮点值

问题描述

我有一个接受可选距离参数的函数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;

标签: c++floating-pointprecisionnumeric-limits

解决方案


如果你小心,你可以使用std::numeric_limits<double>::infinity. 它会在比较中做正确的事情,如果你把它平方,它仍然是无限的。


推荐阅读