2013-03-02 144 views
0

是否可以将两个整数分开来制作一个BigDecimal?我试图优化我的代码。如果我可以减少宣布一个新的BigDecimal的次数,它应该会显着加快我的过程。截至目前,最让我知道我如何降低我的计算是:int除以int生成一个BigDecimal

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

我想知道是否有可能做这样的事情:

int example1 = 103993; 
int example2 = 33102; 

BigDecimal example3 = example1/example2; 

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

+10

不要陷入过早优化的陷阱。在你剖析你的代码之前(实际上有问题),你不知道什么会花费你的时间。 – 2013-03-02 17:28:14

+0

我不确定是否有其他方法比首先将其转换为BigDecimal。所以优化是没有意义的... – Mysticial 2013-03-02 17:29:03

+0

我相信这是你唯一的选择,对于codechef来说,这也是一个问题吗? – 2013-03-02 17:30:14

回答

4

有一种轻微的改善,你可以通过使用其valueOf方法做到这一点使用BigDecimal的内部缓存:

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

一句话,没有。当你将另一个int分开时,你已经失去了信息。