Как да съхранявате точни десетични градуси координати в 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)


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

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/ просто казано, float жертва точността за скорост. двойно е точно. Но когато се занимаваме с математика в такива малки или големи мащаби, често не е необходима точност. маркираният отговор в свързаната статия наистина навлиза в математическата теория (много над главата ми) - person xQbert; 16.12.2011

Просто използвам тип колона DECIMAL и шест цифри след десетичната запетая са повече от достатъчно точни за местоположения.

person Martin Bean    schedule 07.12.2011