我在mysql表中有这个:

id并且bolag_id是int.lat并且lngitude是double.
如果我使用该lngitude列,则不返回任何结果:
lngitude查询: SELECT * FROM location_forslag WHERE lngitude= 13.8461208
但是,如果我使用该lat列,它会返回结果:
lat查询: SELECT * FROM location_forslag WHERE lat= 58.3902782
该lngitude栏有什么问题?
将浮点数与=等于运算符进行比较通常不是一个好主意.
对于您的应用程序,您需要考虑您希望答案的接近程度.
1度约112km,0.00001度约1.1米(赤道).如果两个点相差0.00000001度= 1mm,您真的希望您的应用程序说"不相等"吗?
set @EPSLION = 0.00001 /* 1.1 metres at equator */
SELECT * FROM location_forslag
WHERE `lngitude` >= 13.8461208 -@EPSILON
AND `lngitude` <= 13.8461208 + @EPSILON
Run Code Online (Sandbox Code Playgroud)
这将返回lngitude在@epsilon所需值的度数内的点.您应该选择适合您的应用程序的epsilon值.