float和double数据类型可以存储纬度和经度吗?

Aru*_*Raj 9 java precision google-maps type-conversion google-maps-api-3

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

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

在我的例子中,我只是比较服务器端存储的坐标(纬度和经度).

问题1:

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

问题2:

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

Kai*_*nad 18

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

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

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

  • 这个答案+1.查看此链接以了解您需要的精确度http://en.wikipedia.org/wiki/Wikipedia%3AWikiProject_Geographical_coordinates#Precision (3认同)

Tha*_*omb 7

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

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

  • 出于好奇,想知道 double 可以处理多少精度。根据我的观察,它可以处理 14 位精度(就我而言)。所以我认为这对我有好处。如果 double 可以处理超过 20 位数字,那么 double 将是我的应用程序的理想选择。请提出您的建议。 (2认同)