0

私は次のコードを持っています

double a = 29.0;
double b = 9.0;
double c = 4.0;
BigDecimal sum= new BigDecimal(0.0);
sum=sum.add(new BigDecimal(Math.log10((a)/(b*c) /Math.log10(2)));

BigDecimalの代わりにdoubleを合計に使用しようとしましたが、結果として無限大になります。BigDecimalを使用したとき、結果は得られませんでしたが、エラーは次のようになります。

スレッド"main"の例外java.lang.NumberFormatException:java.math.BigDecimal。(不明なソース)での無限またはNaN

大きな数字を扱うのはこれが初めてです注:a、b、anc cの値はループを介して変更されるため、合計を保存する必要があります。

4

1 に答える 1

4

(a)/(b*c) /Math.log10(2)は負であるため、その対数を取るとNaN 実際、それはナンセンスであり、否定的ではありません。なぜそこで例外が発生するのかわかりません。

本当にログ2を実行しようとしているように見えます。この場合、かっこを間違った場所に配置しているだけです。

于 2013-01-19T11:45:20.167 に答える