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?谢谢大家。
答案 0 :(得分:3)
您正在使用使用浮点的Double
数据类型。简而言之,这种表示具有一定的局限性,并非所有数字都可以完美准确地表示。
计算距离时,可以对双精度执行一些操作,并使用可能的中间值。更改p1
和p2
的顺序时,还会更改操作数的顺序。由于Doubles
无法准确表示数字,因此添加的关联性等属性将完全保留。你得到的两个结果(0和2.9802322387695312E-8)具有非常接近的值,并说明了我的意思"近似关联性"。