【发布时间】:2016-04-13 11:44:36
【问题描述】:
在给定departure = [x,y] 和destination = [x,y] 的情况下,我正在寻找两点之间的距离。对于 x 或 y,一个始终是浮点数,另一个是整数,因此它始终在一条线上。您必须停留在网格线上才能到达目标点,并且没有设置增量。我还没有看到任何其他关于在网格上找到处理整数和浮点数混合的距离的帖子,所以我在这里。
这是我的代码:
def perfectCity(departure, destination):
return abs(destination[0]-departure[0]) + abs(destination[1]-departure[1])
一个例子是departure = [0.4, 1] 和destination = [0.9, 3],它应该等于 2.7,但我得到 2.5
例如,您从 [0.4, 1] 到 [1, 1] 到 [1, 3] 到 [0.9, 3] 的总差值为 2.7。这就像计算曼哈顿距离,但不是在格点开始和结束,而是在一个街区的中途开始和/或结束。
【问题讨论】:
-
浮点数几乎总是有一点舍入误差。以 10 为底的有限小数展开并不总是以 2 为底的有限小数展开
-
我不认为它是重复的,因为你必须知道它是一个浮点错误,在另一个线程中它是显式的。
-
只能有一个线程解决浮点错误?
-
那么——这不是曼哈顿距离(绝对是 2.5 而不是 2.7)。有些事情你没有告诉我们(也许运动仅限于 1.0 的倍数的网格线?)。在这种情况下,2.5 和 2.7 之间的差异与舍入误差无关,而是问题要求的内容与您尝试计算的内容之间的冲突。我将撤回我的近距离投票,但您应该编辑您的问题以更好地传达实际问题。