gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 22:54:58 24 4
gpt4 key购买 nike

正如我在标题中所说,我使用 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 是什么意思?谢谢大家。

最佳答案

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

当您计算距离时,您可以对 double 执行一些操作,并使用可能的中间值。当您更改 p1p2 的顺序时,您也会更改操作数的顺序。由于 double 无法精确表示数字,因此加法关联性等属性不再完全成立。您得到的两个结果(0 和 2.9802322387695312E-8)具有非常接近的值,并说明了我所说的“近似关联性”的含义。

关于Java无法正确计算点到线的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24231458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com