有人可以解释为什么 geodjango中点对象的wkt(众所周知的文本)将返回看起来与对象初始化的坐标不同的坐标?我必须想象这是我做错了什么,而不是地理。 wkt看起来像:“POINT(-122.432534 37.764021)”,但它看起来像:'POINT(-122.4325340000000040 37.7640209999999996)'
这种四舍五入来自哪里?这样做是为了让我无法进行像Location.objects.get这样的查询(pnt =“POINT(-122.432534 37.764021)”),因为它认为它们(有点轻微)是不同的点!
>>> from django.contrib.gis.geos import Point
>>> p = Point(-122.432534,37.764021)
>>> p
<Point object at 0x239c1e4>
>>> p.wkt
'POINT (-122.4325340000000040 37.7640209999999996)'
>>> p.x
-122.432534
>>> p.y
37.764021
答案 0 :(得分:1)
这很可能来自__str__ or __repr__
。对这些数字做任何事情(交叉产品,保存到数据库)并获得相同的精度应该确认这一点。
干杯
答案 1 :(得分:0)
这是因为你不能用二进制格式表示每个数字。在Python解释器中,尝试键入“1.1”(它将返回1.1000000000000001)。沿同一行,浮动(0.37765021)= 0.37765020999999999。