为什么这种距离公式方法给我NaN?

jke*_*eys 0 scala formula euclidean-distance

我有以下代码:

distanceBetween(first:(Double,Double), second:(Double,Double)): Double = {
   math.sqrt((first._1 - second._1) + (first._2 - second._2)) //distance formula
}
Run Code Online (Sandbox Code Playgroud)

当我在Scala解释器中运行它时,我得到了这个结果:

distanceBetween((0.0,0.0),(20.0,20.0))

res0: Double = NaN
Run Code Online (Sandbox Code Playgroud)

谁能明白为什么我得到这个结果?

Pat*_*shu 5

你忘了在减法中包装绝对值.负数的sqrt是NaN.

编辑:我很蠢.你可能想要做欧几里德距离,即sqrt((x2-x1)^ 2 +(y2-y1)^ 2),平方而不是abs.

(如果你打算做出租车距离,如果只能水平和垂直移动,也就是距离,那就是abs(x2-x1)+ abs(y2-y1).)