浮点和双精度数据类型是否适合存储纬度和经度?

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

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

在我的情况下,我只是在服务器端比较存储的坐标(纬度和经度)。

问题 1:

将坐标与数据类型(浮点型或双精度型)进行比较,将来会有什么问题吗?

问题 2:

使用大十进制是好的吗?或者使用浮子或双倍更安全?


答案 1

您应该从所需的准确性开始。确定后,您可以选择合适的数据类型。

如果您认为小数点后5位(1.1132 m)的精度就足够了,则可以轻松地使用。您的计算需要越准确,您就越应该倾向于使用并最终使用。floatdoubleBigDecimal

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


答案 2

这不是一个安全问题,它只是一个精度问题。我不会考虑浮点数,但我认为双打是我认为理想的。您只需要查看可以从双精度中获得的最高精度,并查看它是否符合常规的经度/纬度值。我认为这已经足够了。

否则,BigDecimal只是您问题的简单后门,如果您想要更精确,请使用它


推荐