假设我有一个函数可以计算一对点之间的欧氏距离。 point
和 point_pair
是两个结构,定义为:
struct point {
int x, y;
}
和
struct point_pair {
point a, b;
}
以下函数以一对点作为输入来计算距离:
double calc_distance(point_pair pair)
{
return (sqrt((pair.a.x - pair.b.x) * (pair.a.x - pair.b.x) + (pair.a.y - pair.b.y) * (pair.a.y - pair.b.y)));
}
该函数适用于小点对值;但是对于一个点对,例如:
651760491 595516649
716636914 955747792
输出为-nan
我不确定如何解决这个问题,我应该使用其他东西来代替 double 吗?
这是完整的代码:https://pastebin.com/5XEr9bTD
最佳答案
正确的方法是使用标准的 hypot()
函数。
https://en.cppreference.com/w/cpp/numeric/math/hypot
“计算 x 和 y 的平方和的平方根,在计算的中间阶段没有不当的溢出或下溢。”
关于c++ - 如何在 C++ 中处理 -nan 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52084858/