Search code examples
javabigdecimallargenumber

java BigDecimal arithmaticException invalid operation


I cant find why I got a java.lang.ArithmeticException: Invalid operation while using big decimal.

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();
}

Some of the exponents have values such as -27. Is there any way around this since it would be difficult to store the original values with many zeros. I chose BigDecimal since I needed to precision.

Thank you


Solution

  • If you are raising things to negative exponents, you must specify a MathContext in BigDecimal.pow(int, MathContext) so it knows how much precision to use -- otherwise, BigDecimal will try to compute it to infinite precision, which is not possible for some values.

    (Unless you can be absolutely sure that the operation you're doing has an exact result with a finite number of digits.)