2011-12-16 128 views
4

我使用BigDecimal來做計算。 對於計算的結果我做的:BigDecimal比例和計算

result.setScale(4, RoundingMode.HALF_UP); 

當使用BigDecimal規模和舍入.divide方法是必需的,所以現在我這樣做是這樣的:

BigDecimal result = bigDecimal1.divide(bigDecimal2, 10, RoundingMode.HALF_UP); 

所以我只是用一個足夠大的規模,以確保計算是正確的。 但我不確定這是否使用BigDecimal進行計算的正確方法,並且我對此有所懷疑...

所以,任何指針都會被讚賞。

+1

而問題是? – jarnbjo 2011-12-16 12:41:45

+0

@jarnbjo如果我做對了嗎?如果沒有,那我該怎麼辦? ... – 2011-12-16 13:25:47

+1

而且您向我們提供了哪些功能要求,以便我們決定您是否正確地執行此操作? – jarnbjo 2011-12-16 13:52:38

回答

2

您需要對您認爲正確的答案有清晰的認識。如果誤差小於1e-10,那麼可以,或者它是否需要爲1e-20或1e-30等。對於許多除法結果,由於結果以小數表示,因此無法得到確切的結果。

順便說一句:如果你需要少於15位有效數字,這是使用double的準確性,你可能不需要使用BigDecimal。

例如是1/3被認爲是0.333333333或0.333333333333333333,但它永遠不會是完全正確的(即長度無限)