Соответствующий тип данных mysql для хранения широты и долготы в отдельных полях

Я сохранил Локатор и Долгота в отдельных полях. Я получаю координаты Lat и Lng от google, а также использовал их для поиска близлежащих мест, используя некоторую формулу. Теперь иногда значение широты и долготы достигает до 15 знаков после запятой, как это → 15.123456789000001. что будет лучшим типом данных для хранения этих значений? Сейчас я использую Double для хранения координат широты и долготы.

Спасибо в Advance

Ответ 1

99% времени, любой тип данных с плавающей запятой по вашему выбору должен быть достаточным.

Да, я знаю, что они не всегда могут точно и точно представлять значения до 15 знаков после запятой, но это не имеет значения. Lat/long до 15 десятичных знаков указывает положение с (заявленной) точностью порядка ширины пары атомов водорода. Вам нужно всего шесть знаков после запятой, чтобы получить точность до метра, что достаточно для большинства случаев. Очень немногим должно потребоваться более чем сантиметровая точность (8 мест), а точность 10 или даже 100 метров будет достаточно хорошей для многих приложений.

И, конечно, все, полагая, что исходный источник данных является точной, в первую очередь. Мой телефон GPS редко утверждает точность лучше, чем в пределах 10 м (и даже тогда, в половине случаев, когда его карта не показывает мое фактическое местоположение в пределах 10-метрового круга, где, как он утверждает, я должен быть), поэтому сохранение позиции с большей точностью было бы бессмысленным и вводит в заблуждение. Разумеется, вы можете использовать более точный источник данных, чем дешевый приемник GPS, встроенный в мобильный телефон, но, тем не менее, вряд ли он будет действительно точным вплоть до молекулярного масштаба.

Ответ 2

Я использовал тип данных DECIMAL.

CREATE TABLE IF NOT EXISTS `example` (
  `lat` decimal(18,15) DEFAULT NULL,
  `long` decimal(18,15) DEFAULT NULL 
);