2012-04-25 26 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); 

I問題は除算の結果(つまり同じようであるように十分BigDecimalで表すことができない非終了小数点数であることで、このエラーを

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.divideのパラメータバージョンを使用して、その小数点以下の桁数を制限する必要があります

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

(これは3桁に結果を丸めます。)

+0

私はあなたにピーターを愛して:D – Mehdi

関連する問題