La plupart des gens font l'erreur quand ils voient double, ils crient BigDecimal, alors qu'en fait ils viennent de déplacer le problème ailleurs. Double donne Bit de signe: 1 bit, Largeur d'exposant: 11 bits. Précision significative: 53 bits (52 explicitement stockés). En raison de la nature du double, plus le nombre entier est grand, plus vous perdez de précision relative. Pour calculer la précision relative que nous utilisons ici est ci-dessous.
Précision relative du double dans le calcul, nous utilisons la foluma suivante 2 ^ E <= abs (X) <2 ^ (E + 1)
epsilon = 2 ^ (E-10)% Pour un flottant de 16 bits (demi-précision)
Accuracy Power | Accuracy -/+| Maximum Power | Max Interger Value
2^-1 | 0.5 | 2^51 | 2.2518E+15
2^-5 | 0.03125 | 2^47 | 1.40737E+14
2^-10 | 0.000976563 | 2^42 | 4.39805E+12
2^-15 | 3.05176E-05 | 2^37 | 1.37439E+11
2^-20 | 9.53674E-07 | 2^32 | 4294967296
2^-25 | 2.98023E-08 | 2^27 | 134217728
2^-30 | 9.31323E-10 | 2^22 | 4194304
2^-35 | 2.91038E-11 | 2^17 | 131072
2^-40 | 9.09495E-13 | 2^12 | 4096
2^-45 | 2.84217E-14 | 2^7 | 128
2^-50 | 8.88178E-16 | 2^2 | 4
En d'autres termes, si vous souhaitez une précision de +/- 0,5 (ou 2 ^ -1), la taille maximale que le nombre peut être est de 2 ^ 52. Tout plus grand que cela et la distance entre les nombres à virgule flottante est supérieure à 0,5.
Si vous voulez une précision de +/- 0,0005 (environ 2 ^ -11), la taille maximale que le nombre peut être est 2 ^ 42. Tout plus grand que cela et la distance entre les nombres à virgule flottante est supérieure à 0,0005.
Je ne peux pas vraiment donner une meilleure réponse que cela. L'utilisateur devra déterminer la précision qu'il souhaite lors de l'exécution du calcul nécessaire et sa valeur unitaire (mètres, pieds, pouces, mm, cm). Pour la grande majorité des cas, float suffira pour des simulations simples selon l'échelle du monde que vous souhaitez simuler.
Bien que ce soit quelque chose à dire, si vous ne cherchez qu'à simuler un monde de 100 mètres par 100 mètres, vous aurez quelque part dans l'ordre de précision près de 2 ^ -45. Cela n'entre même pas dans la façon dont les FPU modernes à l'intérieur des processeurs feront des calculs en dehors de la taille du type natif et seulement une fois le calcul terminé, ils arrondiront (en fonction du mode d'arrondi du FPU) à la taille du type natif.