tpd*_*pdi 9 java double currency
我继承了一个货币金额使用双重类型的项目.
更糟糕的是,它使用的框架和框架自己的类使用双倍的金钱.
框架ORM还处理从数据库(和存储)到数据库的值的检索.在数据库中,货币值是类型编号(19,7),但框架ORM将它们映射到双精度数.
如果没有完全绕过框架类和ORM,我能做些什么来准确计算货币价值?
编辑:是的,我知道应该使用BigDecimal.问题是我与一个框架紧密相关,例如,类framework.commerce.pricing.ItemPriceInfo有成员double mRawTotalPrice; 和双mListPrice.我公司的应用程序自己的代码扩展了,例如,这个ItemPriceInfoClass.
实际上,我不能对我的公司说,"废弃两年的工作,花费数十万美元,基于此框架的代码,因为四舍五入的错误"
Mic*_*tta 10
如果可以忍受,将货币类型视为不可或缺.换句话说,如果你在美国工作,跟踪美分而不是美元,如果美分提供你需要的粒度.双精度可以准确地表示整数,直到非常大的值(2 ^ 53)(没有舍入误差直到该值).
但实际上,正确的做法是完全绕过框架并使用更合理的东西.对于框架而言,这是一个业余的错误 - 谁知道还有潜伏的东西?
我没有看到你提到重构.我认为这是你最好的选择.为什么不以正确的方式修复它,而不是把一些黑客扔在一起让事情变得更好?
这里有一些关于double和BigDecimal的信息.这篇文章建议使用BigDecimal即使它更慢.
| 归档时间: |
|
| 查看次数: |
625 次 |
| 最近记录: |