Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 可以平方的最大浮点值_C++_Floating Point_Precision_Numeric Limits - Fatal编程技术网

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“它将返回它比比较中的任何数字都大”:∞ 是一个浮点数,它不大于自身。