2012-04-25 61 views
2

有人可以說我問哪裏是問題嗎?錯誤與BigDecimal

double interval; 
     BigDecimal diff = BigDecimal.valueOf(17); 
     int n=39; 
     BigDecimal N = BigDecimal.valueOf(n); 
     interval = diff.divide(N).doubleValue();//line26 

     System.out.println(interval); 

我有這樣的錯誤

Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. 
    at java.math.BigDecimal.divide(BigDecimal.java:1603) 
    at newlogoot.class.main(class.java:26) 
Java Result: 1 

回答

5

的問題是,該除法的結果是一個非終止它不能在BigDecimal原樣充分表示十進制數(因爲這將需要無限量的內存)。因此,您需要使用兩個(或三個)參數版本的BigDecimal.divide(例如,)來限制其小數位數。

 interval = diff.divide(N, 3, RoundingMode.HALF_DOWN).doubleValue();//line26 

(這輪結果到3張十進制數。)

+0

我愛你彼得:d – Mehdi 2012-04-25 15:54:22