J'ai hérité d'un projet dans lequel les montants monétaires utilisent le double type. Pire encore, le framework utilisé et les propres classes du framework utilisent le double pour l'argent.Double mon argent: mon framework utilise des doubles pour les montants monétaires
Le cadre ORM gère également la récupération des valeurs (et le stockage) dans la base de données. Dans la base de données, les valeurs monétaires sont de type number (19, 7), mais l'ORM du framework les mappe en double.
À court de contournement complet des classes de structure et de l'ORM, y a-t-il quelque chose que je puisse faire pour calculer précisément les valeurs monétaires?
Editer: Oui, je sais que BigDecimal devrait être utilisé. Le problème est que je suis étroitement lié à un cadre où, par exemple, la classe framework.commerce.pricing.ItemPriceInfo a deux membres mRawTotalPrice; et double mListPrice. Le code propre à l'application de mon entreprise étend, par exemple, cet ItemPriceInfoClass.
De façon réaliste, je ne peux pas dire à ma compagnie, « ferraille deux années de travail, et des centaines de milliers de dollars dépensés, en se basant sur le code de ce cadre, en raison d'erreurs d'arrondi »
+1 pour le titre "Double mon argent" – Marko
Pour comprendre votre situation. Mais: l'argent comptant et la comptabilité appropriée tend à être important aux sociétés. Alors faites des poursuites pour négligence. Vous êtes dans une situation difficile: d'une part, recommander que l'entreprise brûle des années de développement pour résoudre ce qui semblait être un problème. D'un autre côté, invitez de gros problèmes sur la route. Si j'étais vous, je dirais à ma direction de cette façon, et laissez-les faire l'appel. Vous avez un problème de responsabilité ici, et c'est ce que votre patron est là pour. Documenter toute décision prise. –
À ce que @Michael Petrotta a dit, il est 100% correct. Selon ce que vous faites, ils pourraient être d'énormes problèmes de responsabilité venant à la baisse de cette décision. De plus, ce cadre - est-ce un cadre commercial? Pourriez-vous les convaincre de changer à BigDecimal à la place, ou y a-t-il une version qui le fait?Sinon, vous devrez vous diriger vers la refactorisation incrémentale, ce qui est une situation horrible où vous êtes - je ressens pour vous. – aperkins