Lors du stockage de latitudes/longitudes qui sont généralement au format: 44.087585 (c'est-à-dire max 2 chiffres avant le point et 6dp) dois-je me soucier des bigdecimals?
L'utilisation du double a une précision suffisante pour des lat/lon précis jusqu'à des pouces pour 6-7 décimales. Dans l'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 lat/lon sont doubles tandis 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 lat/lon est pour la précision inférieure au pied. Vous ne devez pas utiliser float pour lat/lon si vous avez besoin d'une précision inférieure aux pieds.
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 aux latitudes/longitudes. BigDecimal
devient plus important une fois que vous commencez à manipuler des devises ou avez besoin d'avoir plus de contrôle sur la précision.
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, double
ou float
devrait être très bien pour stocker ce dont vous avez besoin pour pouvoir satisfaire la plage de valeurs dont vous avez besoin.
À seulement six décimales de précision, je ne pense pas que double
ou float
vous déclenchera, mais si vous commencez à agréger les valeurs de quelque manière que ce soit, les imprécisions mineures peuvent commencer à s'additionner.
Un double
a suffisamment de précision pour le stocker. Cependant, lors de l'affichage aux utilisateurs, utilisez une chaîne de format comme %.6f
pour que vous n'imprimiez pas les chiffres des ordures.
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 dans des flotteurs est de 1,7 mètre.
si vous voulez contrôler des nano-robots dans leurs nano-voyages en utilisant nano-GPS - optez pour BigDecimal. sinon - float/double suffit.