Я использую запрос haversine, чтобы получить местоположения, ближайшие к широте/долготе, предоставленные из мобильного приложения.
Запрос выглядит так:
SELECT *,(((acos(sin(($latitude *pi()/180)) * sin((`lat`*pi()/180))+cos(($latitude *pi()/180)) * cos((`lat`*pi()/180))* cos((($longitude - `lon`)*pi()/180))))*180/pi())*60*1.1515) AS dist_x
FROM `work_places`
HAVING dist_x <= '1'
ORDER BY dist_x ASC
LIMIT 10
Это работает просто отлично, и я получаю именно те места, которые должен получить.
Проблема заключается в преобразовании dist_x во что-то читаемое пользователями. Прямо сейчас, скажем, dist_x читается как: 0,00996273036944 (floatval и как строка показывают то же самое, поэтому преобразование выполняется правильно)
Поскольку запрос ищет в пределах 1 мили, я пытаюсь преобразовать это в футы, поэтому я делю dist_x на 5280.
$distance = (float)( $dist_x / 5280 );
Я получаю обратно $distance = 1.88688075179E-6
Что я делаю не так?