【问题标题】:int divided by int to make a BigDecimalint 除以 int 得到 BigDecimal
【发布时间】:2013-03-02 17:25:27
【问题描述】:

是否可以将两个整数相除以生成 BigDecimal?我正在尝试优化我的代码。如果我可以减少声明新 BigDecimal 的次数,它应该会显着加快我的流程。到目前为止,我最了解的如何减少计算是:

BigDecimal tester = new BigDecimal("103993")
       .divide(new BigDecimal("33102"), 2000, BigDecimal.ROUND_DOWN);

我想知道是否可以这样做:

int example1 = 103993;
int example2 = 33102;

BigDecimal example3 = example1/example2;

或者类似的东西。我唯一的目标是加快执行时间。

【问题讨论】:

  • 不要陷入过早优化的陷阱。在您分析您的代码(并且实际上有问题)之前,您不知道什么会花费您的时间。
  • 我不确定除了先将两者都转换为 BigDecimal 之外还有其他方法。所以优化没有实际意义……
  • 我相信这是你唯一的选择,还有一个问题是codechef?
  • 由于您使用整数作为参数,因此您不需要使用BigDecimal(String s) 构造函数,而只需使用BigDecimal(int i)。这样应用程序就不必将字符串解析为数值。
  • @Pshemo valueOf 是构造函数的更好替代方案,因为BigDecimal“可能”(确实如此)保留了一桶特定值,它可以简单地返回而不是重建。对于所有Number 格式也可以这样说。

标签: java bigdecimal integer-division


【解决方案1】:

您可以通过使用BigDecimal 的内部缓存通过valueOf 方法进行一些改进:

BigDecimal.valueOf(example1).divide(
    BigDecimal.valueOf(example2), 2000, BigDecimal.ROUND_DOWN);

【讨论】:

    【解决方案2】:

    总之,没有。当您将一个 int 与另一个分开时,您已经丢失了信息。

    【讨论】:

      猜你喜欢
      • 2021-09-01
      • 2018-02-20
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多