【问题标题】:How can I convince my boss to use BigDecimal [closed]我怎样才能说服我的老板使用 BigDecimal [关闭]
【发布时间】:2015-09-23 17:08:09
【问题描述】:

现在我们有一个处理财务问题的现有 Java 应用程序。但它是在几年前使用“double”类型而不是“BigDecimal”实现的。我可以展示这两种类型之间的区别,但是对于我们得到的样本,那些由“double”引起的小错误在我们使用“BigDecimal”时可能不会导致不同的结果。那么我如何才能让我的老板相信花一些时间重写这个应用程序是值得的呢?或者是否有法律或官方规定在金融行业使用 BigDecial 是一种标准?谢谢。

【问题讨论】:

  • 任何编码“法则”最终都会被打破。
  • 为什么你的老板仅仅因为某个变量的数据类型问题想要重新创建这个应用程序?这是双重造成的bug,重新发明轮子没有意义。
  • 为什么说服你使用它?记下这些论点并提出。
  • 对不起,这个问题注定会引起争议,并且可能会被关闭,因为它主要是基于意见的。此外,“始终使用 BigDecimallong 或 Joda-Money”的答案是正确的,但重写功能应用程序可能不是。无论如何,如果您的测试证明您的解决方案适用于所有业务所需的情况,那么您就可以了。如果你不能证明这一点,你必须通过向他展示潜在的威胁来说服你的老板。没有任何法律或任何官方可以使这项任务变得容易。

标签: java finance


【解决方案1】:

到 BigDecimal 的转换是在固定时间内完成的,当您拥有非常大的代码库或者您想要迁移/测试每个模块时,可能会增加。

会计很可能有一个立场:赞成或反对(“我可以记下分差”)。

double造成的数据错误会不规律的发生,至少对外不能很好的呈现公司。 0.01 美分的账单只是一回事。

维修将花费更多时间,并且无法确定(可能无法在正确的位置找到所有修整的地方)。

套餐优惠: 如果你的国家使用小数点逗号,软件中的小数点,全部一起做。数字右对齐、千位分隔符也是如此。

【讨论】:

    【解决方案2】:

    这个问题已经回答过很多次了。

    除了 BigDecimal 的好处之外,这里还有一个示例性问题,即 double/float face(来自 here):

    double h1 = 100.266d;  
    double h2 = 100.0d;  
    
    //Outputs 0.26600000000000534 instead of 0.266
    System.out.println(h1-h2);  
    

    如果 h1 和 h2 与钱有关,那么你就有问题了 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-27
      • 2013-02-22
      • 2023-03-21
      相关资源
      最近更新 更多