我找不到为什么我在使用大小数点的时候得到一个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,因为我需要精确。
谢谢
发布于 2012-03-29 19:38:52
如果你把事情提高到负指数,你必须在MathContext中指定一个BigDecimal.pow(int, MathContext),这样它就知道要使用多少精度--否则,BigDecimal会尝试无限精确地计算它,这对某些值来说是不可能的。
(除非您完全确定您所做的操作具有有限数字的确切结果。)
发布于 2012-03-29 21:58:53
要将BigDecimal乘以10的幂,读者可能会更清楚地使用movePointLeft和movePointRight
而不是tempValue.multiply(ten.pow(exponent)),而是使用tempValue.movePointRight(exponent)。
https://stackoverflow.com/questions/9932239
复制相似问题