5

我正在尝试保存一个这么长的浮点数

13.00386644742523

它基本上是 Lat 和 Lng 值。当我将它保存在数据库中时,它被存储为

13.0039

4

3 回答 3

8

DECIMAL 您应该明确使用精度,并且类型不 应该是FLOAT 因为小数点后的每个数字都很重要,并且您不能因为四舍五入而允许更改它们。

`lat`  DECIMAL(16,14)

阅读手册

于 2012-06-25T08:47:08.900 回答
4

根据经验,我为从 ARINC424 构建的导航数据库执行此操作,并最终使用 DECIMAL(18,12) 以弧度存储值。

注意:浮点数和双精度数不那么精确,可能会导致舍入错误

关键是,当使用度数或弧度时,我们知道值的范围——小数部分需要最多的数字。

最好的方法是使用MySQL Spatial Extensions

于 2012-06-25T08:47:54.597 回答
2

我认为该列的数据类型定义为Float(N,4)其中 N 是数字,4 是允许的小数位数。这就是它舍入存储值的原因。

存储 Lat/Long 的最佳方式是使用空间数据类型。POINT 几何类型将保存您的值

于 2012-06-25T08:47:42.733 回答