Java double vs BigDecimal pour latitude / longitude

Lorsque vous stockez des latitudes / longitudes qui sont généralement au format: 44.087585 (c.-à-d. Max 2 chiffres avant le point et 6dp), est-ce que je dois me soucier des bigdecimals?

Utiliser le double a suffisamment de précision pour obtenir une lat / lon précise en pouces pour 6-7 décimales. En aviation, si des degrés décimaux sont utilisés, ils atteignent généralement au moins 7 décimales. Dans nos simulations de la NASA, les données de latitude / longitude sont doubles alors que toutes les autres attitudes et altitudes sont flottantes. En d’autres termes, la 6ème décimale pour l’altitude n’est pas significative, tandis que la 6ème décimale pour le latt / l est pour la précision sous le pied. Vous ne devez pas utiliser le mode flottant pour les lat / lon si vous avez besoin de précision jusqu’à un niveau inférieur à un pied.

Vous pouvez jouer dans Google Earth pour voir quelle précision vous obtenez en plaçant des marqueurs et en manipulant le dernier chiffre décimal.

double devrait convenir pour les latitudes / longitudes. BigDecimal devient plus important une fois que vous commencez à manipuler des devises ou que vous avez besoin de plus de contrôle sur la précision.

Un double a assez de précision pour le stocker. Toutefois, lors de l’affichage pour les utilisateurs, utilisez une chaîne de format telle que %.6f afin de ne pas imprimer les chiffres %.6f .

Si vous êtes préoccupé par la précision, vous devriez probablement aller avec BigDecimal pour de nombreuses raisons abordées dans cet article . Cela dit, le double ou le float devrait suffire à stocker ce dont vous avez besoin pour pouvoir satisfaire la gamme de valeurs dont vous avez besoin.

Avec seulement six décimales de précision, je ne pense pas que le double ou le float vous fassent trébucher, mais si vous commencez à agréger les valeurs de quelque manière que ce soit, les petites imprécisions peuvent commencer à s’accumuler.

Si vous voulez contrôler des nano-robots dans leurs nano-voyages en utilisant le nano-GPS, optez pour BigDecimal. sinon – float / double est suffisant.

La pire précision de stockage en double est d’environ 3 nm.

Si vous souhaitez le calculer en Java:

 Math.ulp((double) 180) * 60 * 1852 3.1582203519064933E-9 

En prime La pire précision que vous obtenez en stockant des flotteurs est de 1,7 mètre.