Java无法正确计算点到点的距离

时间:2014-06-15 15:59:33

标签: java line distance point trigonometry

正如我在标题中所说,我使用Java函数来计算该距离。下面的代码工作正常,显示0.0距离:

  Point2D.Double p1 = new Point2D.Double(11, 8);
  Point2D.Double p2 = new Point2D.Double(8, 5);
  Line2D.Double r = new Line2D.Double(p1, p2);
  System.out.println(r.ptLineDist(9.56, 6.56));

但如果我改变了这个:

  Line2D.Double r = new Line2D.Double(p2, p1);

它显示了2.9802322387695312E-8距离,尽管它是同一条线。 ¿当我说这不应该发生时,有人能告诉我我是否正确吗? 什么意思2.9802322387695312E-8?谢谢大家。

1 个答案:

答案 0 :(得分:3)

您正在使用使用浮点的Double数据类型。简而言之,这种表示具有一定的局限性,并非所有数字都可以完美准确地表示。

计算距离时,可以对双精度执行一些操作,并使用可能的中间值。更改p1p2的顺序时,还会更改操作数的顺序。由于Doubles无法准确表示数字,因此添加的关联性等属性将完全保留。你得到的两个结果(0和2.9802322387695312E-8)具有非常接近的值,并说明了我的意思"近似关联性"。