我想看看是否兩點之間計算的距離比這樣一個給定的半徑小:比較浮子和在Python
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上使用Python 2.6.70
一般來說,你不應該比較*等於*的花車而不加小心,但比較花車相對論(>或<)是完全沒問題的。 – 2012-04-05 23:02:06
你的更新是由於[精度錯誤](http://docs.python.org/tutorial/floatingpoint.html) - 它們是計算的事實,在99.9%的情況下應該對你沒有影響,因爲它們的差異太小而無法關心。如果他們這樣做,看看[十進制模塊](http://docs.python.org/library/decimal.html)。 – 2012-04-05 23:14:57
@Lattyware - 他們比較重要。請參閱下面我的答案中的鏈接。浮動很棘手。認爲他們很容易比較是錯誤的。 http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm – 01100110 2012-04-05 23:45:24