Я унаследовал проект, в котором денежные суммы используют тип double.
Хуже того, фреймворк, который он использует, и собственные классы фреймворка используют double для денег.
ORM фреймворка также обрабатывает извлечение значений из (и сохранение в) базы данных. В базе данных денежные значения имеют номер типа (19, 7), но структура ORM сопоставляет их с двойниками.
Если не считать полного обхода классов фреймворка и ORM, Могу ли я что-нибудь сделать для точного расчета денежных величин?
Изменить: да, я знаю, что следует использовать BigDecimal. Проблема в том, что я тесно связан с фреймворком, в котором, например, класс framework.commerce.pricing.ItemPriceInfo имеет члены double mRawTotalPrice; и двойной mListPrice. Собственный код приложения моей компании расширяет, например, этот ItemPriceInfoClass.
На самом деле, я не могу сказать своей компании: «отказаться от двух лет работы и потраченных сотен тысяч долларов, основываясь на коде на этой структуре, из-за округления. ошибки "