加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 双倍我的钱:我的框架使用双打货币金额

发布时间:2020-12-14 05:07:19 所属栏目:Java 来源:网络整理
导读:我继承了一个项目,其中货币量使用双重类型. 更糟糕的是,它使用的框架和框架自己的类使用两倍的钱. 框架ORM还处理从(和存储)到数据库的值的检索.在数据库中,货币值是类型号(19,7),但框架ORM将它们映射到双精度. 缺少完全绕过框架类和ORM,有没有什么可以做的来
我继承了一个项目,其中货币量使用双重类型.

更糟糕的是,它使用的框架和框架自己的类使用两倍的钱.

框架ORM还处理从(和存储)到数据库的值的检索.在数据库中,货币值是类型号(19,7),但框架ORM将它们映射到双精度.

缺少完全绕过框架类和ORM,有没有什么可以做的来准确计算货币价值?

编辑:是的,我知道应该使用BigDecimal.问题是我紧紧地关系到一个框架,例如,在这个框架中,框架com.com.pricing.ItemPriceInfo有成员double mRawTotalPrice;和double mListPrice.我公司的应用程序自己的代码扩展了,例如这个ItemPriceInfoClass.

实际上,我不能对我的公司说,“废除两年的工作,花费数十万美元,基于这个框架的代码,因为四舍五入的错误”

解决方法

如果可以容忍,将货币类型视为一体.换句话说,如果你在美国工作,跟踪美分,而不是美元,如果美分提供你需要的粒度.双精度可以准确地表示高达 a very large value (2^53)的整数(不超过该值的舍入误差).

但是真的,正确的做法是完全绕过框架,并使用更合理的东西.这是框架的业余错误 – 谁知道还有什么潜在的?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读