MySQL存储浮点数
MySQL存储浮点数
根据我的经验,我为一个基于ARINC424构建的导航数据库做了这个工作,最终使用了DECIMAL(18,12)来存储弧度值。
注意:浮点数和双精度浮点数不够精确,可能会导致舍入误差。
关键是,当使用角度或弧度时,我们知道值的范围-小数部分需要最多的数字。
最好的方法是使用MySQL的空间扩展。
如何在PHP Myadmin中分配它?
在SQL窗口中输入以下内容:ALTER TABLE table-name
CHANGE COLUMN field-name
field-name
DECIMAL(18,12) ;
问题的原因是浮点数和双精度浮点数不够精确,可能会导致舍入误差。解决方法是使用DECIMAL(18,12)来存储值。另外,还可以考虑使用MySQL的空间扩展来处理这个问题。
MySQL中存储浮点数的问题是由于浮点数类型在MySQL中是近似值而不是精确值引起的。因为经纬度的精确性对于许多应用程序来说非常重要,所以使用浮点数类型存储经纬度是极其不合适的。
解决这个问题的方法是明确地指定精度,并使用DECIMAL
类型而不是FLOAT
类型。在DECIMAL
类型中,小数点后的每一位都是重要的,不能让它们因为四舍五入而改变。
例如,可以使用以下方式来定义经纬度的字段类型:
lat DECIMAL(16,14)
这样就可以确保经纬度的精确性。更多详细信息可以在MySQL的官方文档中查看。
总结起来,使用浮点数类型存储经纬度会导致精度丢失,因此应该使用DECIMAL
类型来确保经纬度的精确性。