Как сохранить точные координаты десятичных градусов в базе данных MySQL

Я создал базу данных, используя учебник по поиску магазинов в Google Code, в котором указано, что поля для хранения координат маркеров должны иметь тип FLOAT(10,6). Однако, когда я геокодирую определенные точки с помощью службы геокодирования Google, я получаю некоторые результаты с 14 знаками после запятой. Например,

-70.07290899999998

Числа никогда не могут быть больше 21 или меньше -67 и всегда имеют от 1 до 14 цифр после десятичной точки.

Как мне установить это поле в базе данных?


person Keyslinger    schedule 07.12.2011    source источник
comment
MySQL должен округлить за вас. Согласно руководству по MySQL переменной FLOAT(7,4) присвоено значение из 999.00009 будет сохранено как 999.0001   -  person Brad Christie    schedule 07.12.2011


Ответы (2)


Не используйте float; использовать фиксированную точку. Плавучий по своей природе грубый.

http://dev.mysql.com/doc/refman/5.0/en/fixed-point-types.html

3 до, 15 после DECIMAL (17,14)

person xQbert    schedule 07.12.2011
comment
и для лучшего чтения: stackoverflow.com/ questions / 1074474 / просто поплавок жертвует точностью ради скорости. двойной точный. Но при работе с математикой в ​​таком маленьком или большом масштабе точность часто не требуется. отмеченный ответ в связанной статье действительно входит в теорию математики (намного выше моей головы) - person xQbert; 16.12.2011

Я просто использую тип столбца DECIMAL, и шести цифр после десятичной точки более чем достаточно для определения местоположения.

person Martin Bean    schedule 07.12.2011