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