我知道,我可以使用BigDecimal.divide()
方法來設置固定精度:集BigDecimal的精度,如果小數重複
BigDecimal a1 = new BigDecimal(1);
BigDecimal a2 = new BigDecimal(3);
BigDecimal division = a1.divide(a2,5,1); //equals 0.33333
但是,如果劃分結果是準確的:
BigDecimal a1 = new BigDecimal(1);
BigDecimal a2 = new BigDecimal(4);
BigDecimal division = a1.divide(a2,5,1); //equals 0.25000
如何設置除法結果如果分部以一個確切的結果結束,它只會給出0.25而不是0.25000的輸出?
我也試着不這樣做指定精度:
BigDecimal division = a1.divide(a2);
它成功地做1/4
時給出結果0.25
,但是當它象師或1/3
它2/3
導致運行時ArithmeticException
。
a1
和a2
從用戶輸入實例化。
有什麼辦法解決這個問題嗎?
您應該更喜歡['RoundingMode'](https://docs.oracle.com/javase/8/docs/api/java/math/RoundingMode.html)類傳遞整數舍入模式值。即使無論出於何種原因必須使用整數方法,也可以使用「BigDecimal」中的常量,例如['BigDecimal.ROUND_DOWN'](https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html#ROUND_DOWN)。 – dimo414
哦,我明白了,我不確定選擇哪一個,所以我只是用int來代替。但是,現在我明白了。 – user3411184