C++ 可以平方的最大浮点值
我有一个函数,它接受一个可选的距离参数C++ 可以平方的最大浮点值,c++,floating-point,precision,numeric-limits,C++,Floating Point,Precision,Numeric Limits,我有一个函数,它接受一个可选的距离参数dist,但我的算法适用于平方距离。如果用户没有指定任何值,我希望dist尽可能大 Result foo(double dist = std::sqrt(std::numeric_limits<double>::max())) const; Result foo(double dist=std::sqrt(std::numeric_limits::max())常量; 上面的代码是安全的,还是会因为舍入错误而爆炸?使用(甚至)更丑的东西会更好吗
dist
,但我的算法适用于平方距离。如果用户没有指定任何值,我希望dist
尽可能大
Result foo(double dist = std::sqrt(std::numeric_limits<double>::max())) const;
Result foo(double dist=std::sqrt(std::numeric_limits::max())常量;
上面的代码是安全的,还是会因为舍入错误而爆炸?使用(甚至)更丑的东西会更好吗
Result foo(double dist = std::sqrt(std::numeric_limits<double>::max() - 100)) const;
Result foo(double dist=std::sqrt(std::numeric_limits::max()-100))常量;
如果小心,可以使用std::numeric\u limits::infinity
。它将在比较中做正确的事情,如果你将它平方,它将保持无穷大。不确定你的算法是否可以使用它,但为什么不std::numeric\u limits::infinity
?它将返回它比比较中的任何数字都大,并且当你将它平方时,它不会变得更糟。哦,我不知道我可以平方std::numeric\u limitsLet,那么让它成为一个答案。Re“它将返回它比比较中的任何数字都大”:∞ 是一个浮点数,它不大于自身。