float和double数据类型是否适合存储纬度和经度?

时间:2013-12-18 11:40:10

标签: java google-maps google-maps-api-3 precision type-conversion

我在服务器端存储纬度和经度(JAVA平台)。

要存储这些值,我在服务器端使用float和double数据类型。我开始知道float和double不是推荐的原始数据类型(建议不要以专业方式使用货币),因为float和double有舍入精度问题

就我而言,我只是比较服务器端存储的坐标(纬度和经度)。

问题1:

将坐标与数据类型(浮点数或双精度数)进行比较将来会出现任何问题吗?

问题2:

使用大小数好吗?或者使用浮点数或双倍更安全?

3 个答案:

答案 0 :(得分:17)

你应该从你想要的the accuracy开始。确定后,您可以选择合适的数据类型。

如果您确定精确到5位小数(1.1132 m)就足够了,您可以轻松使用float。您的计算需要越准确,您应该越倾向于使用double并最终使用BigDecimal

比较浮点数时,还应该包含必要的精度。

答案 1 :(得分:7)

这不是安全问题,只是一个精确问题。 我不会考虑花车,但双打是我认为理想的。 你只需要看看你能从双精度中获得的最精确度,看它是否符合常规的经度/纬度值。我认为这还不够。

其他BigDecimal只是你问题的一个简单后门,如果你想要更高精度就可以使用它

答案 2 :(得分:2)

您不必对经度或纬度值进行任何舍入,因此请使用您想要的任何一个。双精度更精确,所以这是你决定中最重要的因素。

您的长/纬度值需要多少精度?

为了精确定位地图,您可能需要查看大小数,但对于模糊值,浮点就足够了。