我想看看两个点之间的计算距离是否小于给定半径,如下所示:
if distance(lat1, long1, lat2, long2) < radius:
print "Distance: %s Radius: %s" % (distance(lat1, long1, lat2, long2), radius)
这里distance
将有效地返回float
,而radius
是int
。
我知道我不应该直接比较浮点数,我应该比较一个阈值。既然如此,有没有更好的方法来检查一个浮点是否小于int(或另一个浮点)。
更新 从所有的回复来看,这种比较似乎是可以的。但我确实观察到:
>>> 1.2000000000000001 > 1.2
True
>>> 1.20000000000000001 > 1.2
False
这不成问题吗?我在Mac上使用Python2.6.7
直接比较一下,没有什么坏处。
Python能够很好地比较不同类型的数字:
Python是duck类型的,所以一般来说,您根本不必担心类型。
由于precision errors,比较等式的浮点与其他浮点可能会有一些问题:
但与
int
和/或<
或>
操作相比,您不必担心。在您的更新中,我们可以使用^{} 模块来显示原因:
但这真的重要吗?这是浮点数的固有问题,但只在需要真正高精度的地方才重要。
相关问题 更多 >
编程相关推荐