11

なぜ java.lang.ArithmeticException: Invalid operation大きな小数を使用しているのかわかりません。

public static String E (int exponent, String value){
BigDecimal ten= new BigDecimal("10");
BigDecimal tempValue=new BigDecimal (value);
return tempValue.multiply(ten.pow(exponent)).toString();
}

一部の指数には、などの値があります-27。多くのゼロを含む元の値を格納するのは難しいので、これを回避する方法はありますか?精度が必要だったのでBigDecimalを選びました。

ありがとうございました

4

2 に答える 2

10

負の指数まで累乗する場合は、 in を指定して、使用する精度を知る必要があります。MathContextそうBigDecimal.pow(int, MathContext)しないBigDecimalと、無限の精度で計算しようとしますが、これは一部の値では不可能です。

(実行している演算が有限の桁数で正確な結果をもたらすことを絶対に確信できる場合を除きます。)

于 2012-03-29T19:38:52.563 に答える
3

BigDecimalに10の累乗を掛けるには、読者にとっておそらくより明確に(そしてより効率的に)使用できmovePointLeftますmovePointRight

代わりにtempValue.multiply(ten.pow(exponent))を使用しますtempValue.movePointRight(exponent)

于 2012-03-29T21:58:53.177 に答える