Ho ereditato un progetto in cui gli importi monetari usano il doppio tipo.Raddoppia i miei soldi: il mio framework usa i doppi per gli importi monetari
Peggio ancora, il framework che utilizza e le classi proprie del framework utilizzano il doppio del denaro.
L'ORM del framework gestisce anche il recupero dei valori da (e archiviazione a) il database. Nel database i valori monetari sono di tipo numero (19, 7), ma l'ORM del framework li mappa in doppio.
A corto di bypassare completamente le classi framework e ORM, c'è qualcosa che posso fare per calcolare con precisione i valori monetari?
Modifica: sì, so che BigDecimal deve essere utilizzato. Il problema è che sono strettamente legato a un framework in cui, ad esempio, la classe framework.commerce.pricing.ItemPriceInfo ha membri double mRawTotalPrice; e doppio mListPrice. Il codice dell'applicazione della mia azienda si estende, ad esempio, a ItemPriceInfoClass.
Realisticamente, non posso dire alla mia azienda, "scarto di due anni di lavoro, e centinaia di migliaia di dollari spesi, basando il codice in questo quadro, a causa di errori di arrotondamento"
+1 per il titolo "Raddoppia i miei soldi" – Marko
Capisco la tua situazione. Ma: il denaro contante e la contabilità corretta tendono ad essere importanti per le aziende. Quindi fare cause legali per negligenza. Ti trovi in una situazione difficile: da una parte, consiglia all'azienda di bruciare anni di sviluppo per risolvere quello che sembrava essere un problema. D'altra parte, invitare grandi problemi lungo la strada. Se fossi in te, lo direi alla mia direzione in quel modo, e fagli fare la chiamata. Hai un problema di responsabilità qui, ed è quello che il tuo capo è lì per. Documenta qualsiasi decisione presa. –
Per quello che @ Michele Petrotta ha detto, è corretto al 100%. A seconda di ciò che stai facendo, potrebbero essere enormi problemi di responsabilità che arrivano da questa decisione. Inoltre, questo quadro - è un quadro commerciale? Potresti convincerli a cambiare in BigDecimal, o c'è una versione che lo fa?Altrimenti, avresti bisogno di dirigere la via del refactoring incrementale, che è una situazione orribile in cui ti trovi - provo per te. – aperkins