Php mySql中haversine公式的正确数据类型是什么

Php mySql中haversine公式的正确数据类型是什么,php,mysql,pdo,haversine,Php,Mysql,Pdo,Haversine,当我将经度和纬度保存到数据库中时,它存储为数据类型Decimal。 经度保存为34,纬度保存为118 这对哈弗森公式有效吗。我正在试图找到一个距离用户当前位置20英里以内的位置。不,那肯定不行 一个纬度大约是70英里。这比您期望的精度大得多 如果你想计算20英里分辨率的距离,你需要纬度和经度至少有一个小数位-0.1°纬度是7英里,0.1°经度加起来大约是10英里√2x7=9.8。当然,如果能在源数据中获得尽可能多的精度,你会过得更好 这里可能出现的问题是,您使用了纬度和经度的十进制类型,但没有指

当我将经度和纬度保存到数据库中时,它存储为数据类型Decimal。 经度保存为34,纬度保存为118
这对哈弗森公式有效吗。我正在试图找到一个距离用户当前位置20英里以内的位置。

不,那肯定不行

一个纬度大约是70英里。这比您期望的精度大得多

如果你想计算20英里分辨率的距离,你需要纬度和经度至少有一个小数位-0.1°纬度是7英里,0.1°经度加起来大约是10英里√2x7=9.8。当然,如果能在源数据中获得尽可能多的精度,你会过得更好


这里可能出现的问题是,您使用了纬度和经度的十进制类型,但没有指定宽度。在MySQL中,默认为十进制10,0-10位,所有数字都在小数位之前,例如1234567890。。您可能想要的是更接近小数10,6的东西,它允许列存储一个10位数字,其中6位数字位于小数点后,例如1234.123456,因此,没有必要再存储更多的数据。

没有。您需要更高的精度。这距离有多远?如果在一两英里外就可以了。这个哈弗森公式是否适用于这种格式?最好的方法是什么?不寻找代码,但如果十进制不是正确的格式,我应该采取什么方法?@dscrown添加了一些关于十进制类型的注释。