java BigDecimal arithmaticException无效操作

Err*_*ges 8 java largenumber bigdecimal

我无法找到为什么我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();
}
Run Code Online (Sandbox Code Playgroud)

一些指数具有诸如的价值-27.有没有办法解决这个问题,因为很难用很多零存储原始值.因为我需要精确度,所以我选择了BigDecimal.

谢谢

Lou*_*man 6

如果要将事物提升为负指数,则必须指定一个MathContextin,BigDecimal.pow(int, MathContext)以便它知道要使用多少精度 - 否则,BigDecimal将尝试将其计算为无限精度,这对于某些值是不可能的.

(除非你可以完全确定你正在进行的操作具有有限位数的精确结果.)

  • 正确的。我应该注意到这一点。也就是说,@ErrorMessages,看起来你的方法实际上相当于“scaleByPowerOfTen”,这可能更简单。 (2认同)