0

我知道找到距离的公式是什么,但我不明白为什么我的程序不起作用?这是我的代码:

public class Test {
    public static void main(String[] args) {
      double res = dist(0.0, 0.0, 4.0, 4.0);
      System.out.println(res);
    }
    private static double dist(double x1, double y1, double x2, double y2) {
         return Math.sqrt((x2-x1)*(x2-x1)-(y2-y1)*(y2-y1));
    }
}

结果不是得到 4.0,而是得到 0.0?!有人可以解释我为什么吗?

4

2 回答 2

2

你的 dist 函数有一个错误。距离应该是平方和的平方根,而不是差值。将其更改为以下内容。

return Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));

此外,您的结果应该是 4*sqrt(2) 而不是 4.0。

于 2014-07-02T10:53:46.650 回答
0

距离大约是5.656854,不是 4. 尝试Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))。公式是a^2+b^2=c^2(a 平方 + b 平方 = c 平方),所以你需要使用+,而不是-。此更改将使其工作。您将负数传递给Math.sqrt()其他情况。

于 2014-07-02T11:00:38.110 回答