我在服务器端存储纬度和经度(JAVA平台)。
要存储这些值,我在服务器端使用float和double数据类型。我开始知道float和double不是推荐的原始数据类型(建议不要以专业方式使用货币),因为float和double有舍入精度问题。
就我而言,我只是比较服务器端存储的坐标(纬度和经度)。
问题1:
将坐标与数据类型(浮点数或双精度数)进行比较将来会出现任何问题吗?
问题2:
使用大小数好吗?或者使用浮点数或双倍更安全?
答案 0 :(得分:17)
你应该从你想要的the accuracy开始。确定后,您可以选择合适的数据类型。
如果您确定精确到5位小数(1.1132 m)就足够了,您可以轻松使用float
。您的计算需要越准确,您应该越倾向于使用double
并最终使用BigDecimal
。
比较浮点数时,还应该包含必要的精度。
答案 1 :(得分:7)
这不是安全问题,只是一个精确问题。 我不会考虑花车,但双打是我认为理想的。 你只需要看看你能从双精度中获得的最精确度,看它是否符合常规的经度/纬度值。我认为这还不够。
其他BigDecimal只是你问题的一个简单后门,如果你想要更高精度就可以使用它
答案 2 :(得分:2)
您不必对经度或纬度值进行任何舍入,因此请使用您想要的任何一个。双精度更精确,所以这是你决定中最重要的因素。
您的长/纬度值需要多少精度?
为了精确定位地图,您可能需要查看大小数,但对于模糊值,浮点就足够了。