java double 存储_关于java:float和double数据类型是否适合存储经纬度?

本问题已经有最佳答案,请猛点这里访问。

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

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

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

问题1:

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

问题2:

用大十进制好吗? 还是使用float或double更为安全?

小数点后六位(浮点数的最大精度)就足够了。 见gis.stackexchange.com/a/8674

@JarrodRoberson这个问题是关于Java的,另一个问题是关于MySQL的。 那么这个问题怎么可以重复?

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

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

比较浮点数时,还应考虑必要的精度。

为此答案+1。检查此链接以了解所需的精度en.wikipedia.org/wiki/

1纬度或经度约为111公里。另外:double l = -179.123456789; System.out.println((float)f);打印:-179.15346,则仅当使用float(4字节)编码时,才可以估计1m左右的精度。

这不是安全问题,而是精度问题。

我不会考虑花车,但我认为双打是理想的选择。

您只需要查看双精度数中最精确的值,然后查看它是否适合常规的经度/纬度值。我认为这已经足够了。

其他BigDecimal只是问题的简单后门,如果您想提高精度,请使用它

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

根据所使用的Java,双基元数据类型的长度为64位,正弦值当然为1位,等等。您可以在此处找到有关精度的信息:docs.oracle.com/javase/specs/jls/ SE7 / HTML / JLS-4.html#JLS-4.2.3

非常感谢您的宝贵指导。

您无需对经度或纬度值进行任何取整,因此请使用任意一个。 Double更为精确,因此,让它成为您决策中最重要的因素。

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

为了精确定位地图,您可能需要查看大十进制,但是对于模糊的值,float就足够了。

它可能需要20位数字。但是不根据我的观察,情况就是这样。当然,我不做任何舍入运算。我只是在检查以下条件if((swLat <=纬度)&&(swLng <=经度)&&(neLat> =纬度)&&(neLng> =经度))...如果我用double实现,则条件为工作正常。但是害怕使用它,因为我需要准确性。使用Double是适合我的情况的理想选择?

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值