C'e' un FONDAMENTALE problema DI FONDO, che raramente viene preso in considerazione:
1) gli arrotondamenti sugli importi monetari sono regolati dalla legge
2) gli importi monetari DOVREBBERO essere rappresentati mediante un FIXED_DECIMAL con un predefinito numero di cifre decimali che DIPENDE dalla valuta. Possono essere 2, 4 o 5, ma ci sono anche altri casi
3) quando si fanno delle operazioni con importi in valuta, SI DOVREBBE seguire le indicazioni di legge.
E se non ci sono leggi specifice, comunque ci sono regole consolidate sull'argomento: basta solo immaginare i pasticci che si potrebbero fare con valute che hanno ordini di grandezza diversi, oppure tra quelle che hanno parte decimale e quelle che non ne hanno.
Quindi, in generale, rappresentare un importo in valuta mediante un float o un double e fare le operazioni come se fosse un normale numero in floating point, E' SBAGLIATO.
Poi, di QUANTO sia sbagliato, e' tutta un'altra storia.