331 votes

Quel type de données MySQL doit être utilisé pour Latitude / Longitude avec 8 décimales?

Je suis en train de travailler avec les données de carte, et l' Latitude/Longitude s'étend à 8 décimales. Par exemple:

Latitude 40.71727401
Longitude -74.00898606

J'ai vu dans le document Google qui utilise:

lat FLOAT( 10, 6 ) NOT NULL,  
lng FLOAT( 10, 6 ) NOT NULL

cependant, leur décimales seulement aller à 6.
Dois-je utiliser FLOAT(10, 8) ou est-il une autre méthode à envisager pour le stockage de ces données de sorte qu'elle est exacte. Il sera utilisé avec la carte des calculs. Merci!

705voto

gandaliter Points 2099

DÉCIMAL est la base de données de type exacte de l'arithmétique. Contrairement à FLOTTER sa précision est fixe pour toute taille de nombre, donc en l'utilisant à la place de FLOAT il est possible d'éviter les erreurs de précision lorsque vous faites quelques calculs. Si vous avez été seulement de stocker et de récupérer les numéros sans calcul, dans la pratique, FLOAT serait à l'abri, bien qu'il n'y a pas de mal à l'aide de chiffres après la VIRGULE. Avec les calculs de FLOTTEUR est encore principalement ok, mais être absolument sûr de 8d.p. précision vous devez utiliser des DÉCIMALES.

Les Latitudes comprises entre -90 à +90 (degrés), donc DÉCIMAL(10, 8) est ok pour ça, mais longitudes gamme de -180 à +180 (degrés) si vous avez besoin DÉCIMAL(11, 8). Le premier nombre est le nombre total de chiffres stockées, et le second est le nombre après la virgule.

En bref: lat DECIMAL(10, 8) NOT NULL, lng DECIMAL(11, 8) NOT NULL

Cela explique comment MySQL fonctionne avec des données en virgule flottante-types.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X