现在我们有一个处理财务问题的现有Java应用程序。但它是在几年前使用" double"键入而不是" BigDecimal"。我可以显示这两种类型之间的区别,但对于我们得到的样本,由" double"引起的那些小错误。当我们使用" BigDecimal"时,可能不会导致不同的结果。那么如何让我的老板相信值得花一些时间来重写这个应用呢?或者是否有法律或官方声明在金融业使用BigDecial是一种标准? Thnaks。
答案 0 :(得分:2)
转换为BigDecimal是在固定时间内完成的,当您拥有非常大的代码库或者您希望为每个模块迁移/测试时,可能会增量。
会计很可能有一个立场:无论是专业还是反对("我可以记录差异和#34;)。
由双重引起的数据错误将不定期地发生,并且至少不会将公司良好地呈现给外部。 0.01美分的票据只是一件事。
修理将耗费更多时间而且不能得到肯定(可能无法在正确的位置找到四舍五入的位置)。
套餐优惠: 如果您的国家/地区使用小数点逗号,则软件为小数点,请一起执行。对于数字的右对齐,千位分隔符也一样。
答案 1 :(得分:0)
这个问题已被多次回答。
除了BigDecimal的好处之外,这是一个双重/浮动面(来自here)的示例性问题:
double h1 = 100.266d;
double h2 = 100.0d;
//Outputs 0.26600000000000534 instead of 0.266
System.out.println(h1-h2);
如果h1和h2与钱有关,那么你就有问题:)