No double
non soddisferà le tue esigenze.
Se non fosse per aver bisogno di fare calcoli, String
sarebbe meglio soddisfare le tue esigenze.
Questo lascia BigDecimal
. Calcola più lentamente di double
ma calcola fedelmente ogni 10 cifre di base.
Il problema con double
è che il modo in cui viene visualizzato è un'approssimazione di ciò che memorizza. Visualizziamo double
nella base 10 ma lo memorizziamo nella base 2. Questo va bene quando tutto ciò che rappresenta sono misurazioni di valori continui come la temperatura. Usalo per rappresentare valori decimali discreti di base 10 come il denaro e stai invitando Ron Livingston e Richard Pryor per rubarti i tuoi mezzi penny.
Sembra che anche double
debba essere discreto. Dopotutto è memorizzato anche in uno e zeri. In realtà lo è. Ma la base 2 discreta e la base 10 discrete non sempre coincidono come posso mostrare con due righelli che dividono in pollici in modo diverso. Ogni valore di entrambi i righelli può essere rappresentato perfettamente nei nostri computer se BigDecimal
rappresenta il righello superiore e double
rappresenta il righello inferiore. Tuttavia, non è sempre possibile convertire perfettamente da uno all'altro.
Entrambi corrispondono a 1 pollice. Corrispondono a 1/2 pollice. Non corrispondono a 1/10 di pollice. Per arrivare a 1/10 devi dividere per 5. double
sa solo come dividere per 2.
Questo peggiorare è che double
cercherà di avvicinarsi all'1 / 10. E potrebbe anche arrotondare il display a dove sembra. 1 è lì dentro. Ma dal momento che non è realmente lì, l'importo che spende è solo in attesa di rovinare i tuoi calcoli.
Provare a double
dei tuoi soldi è un problema.