我继承了一个项目,其中货币量使用双重类型.
更糟糕的是,它使用的框架和框架自己的类使用两倍的钱.
框架ORM还处理从(和存储)到数据库的值的检索.在数据库中,货币值是类型号(19,7),但框架ORM将它们映射到双精度.
缺少完全绕过框架类和ORM,有没有什么可以做的来准确计算货币价值?
编辑:是的,我知道应该使用BigDecimal.问题是我紧紧地关系到一个框架,例如,在这个框架中,框架com.com.pricing.ItemPriceInfo有成员double mRawTotalPrice;和double mListPrice.我公司的应用程序自己的代码扩展了,例如这个ItemPriceInfoClass.
解决方法
如果可以容忍,将货币类型视为一体.换句话说,如果你在美国工作,跟踪美分,而不是美元,如果美分提供你需要的粒度.双精度可以准确地表示高达
a very large value (2^53)的整数(不超过该值的舍入误差).
但是真的,正确的做法是完全绕过框架,并使用更合理的东西.这是框架的业余错误 – 谁知道还有什么潜在的?