Molte persone commettono l'errore quando vedono il doppio urlano BigDecimal, quando in realtà hanno appena spostato il problema altrove. Il doppio dà bit di segno: 1 bit, larghezza esponente: 11 bit. Precisione significativa: 53 bit (52 memorizzati in modo esplicito). A causa della natura del doppio, maggiore è l'intero interger, si perde la precisione relativa. Per calcolare la precisione relativa che usiamo qui è qui sotto.
Precisione relativa del doppio nel calcolo usiamo il seguente foluma 2 ^ E <= abs (X) <2 ^ (E + 1)
epsilon = 2 ^ (E-10)% Per un float a 16 bit (metà precisione)
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
In altre parole, se si desidera una precisione di +/- 0,5 (o 2 ^ -1), la dimensione massima che può essere il numero è 2 ^ 52. Qualsiasi più grande di questo e la distanza tra i numeri in virgola mobile è maggiore di 0,5.
Se si desidera una precisione di +/- 0.0005 (circa 2 ^ -11), la dimensione massima che può essere il numero è 2 ^ 42. Qualsiasi più grande di questo e la distanza tra i numeri in virgola mobile è maggiore di 0,0005.
Non posso davvero dare una risposta migliore di questa. L'utente dovrà capire quale precisione desidera durante l'esecuzione del calcolo necessario e il valore dell'unità (metri, piedi, pollici, mm, cm). Per la stragrande maggioranza dei casi, float sarà sufficiente per semplici simulazioni a seconda della scala del mondo che si intende simulare.
Anche se è qualcosa da dire, se stai solo cercando di simulare un mondo di 100 metri per 100 metri, avrai un posto nell'ordine della precisione vicino a 2 ^ -45. Questo non sta nemmeno esaminando il modo in cui la moderna FPU all'interno della CPU eseguirà i calcoli al di fuori della dimensione del tipo nativo e solo dopo aver completato il calcolo si arrotonderanno (a seconda della modalità di arrotondamento della FPU) alla dimensione del tipo nativo.