首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java BigDecimal arithmaticException无效操作

java BigDecimal arithmaticException无效操作
EN

Stack Overflow用户
提问于 2012-03-29 19:36:04
回答 2查看 5.9K关注 0票数 12

我找不到为什么我在使用大小数点的时候得到一个java.lang.ArithmeticException: Invalid operation

代码语言:javascript
复制
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,因为我需要精确。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-29 19:38:52

如果你把事情提高到负指数,你必须在MathContext中指定一个BigDecimal.pow(int, MathContext),这样它就知道要使用多少精度--否则,BigDecimal会尝试无限精确地计算它,这对某些值来说是不可能的。

(除非您完全确定您所做的操作具有有限数字的确切结果。)

票数 11
EN

Stack Overflow用户

发布于 2012-03-29 21:58:53

要将BigDecimal乘以10的幂,读者可能会更清楚地使用movePointLeftmovePointRight

而不是tempValue.multiply(ten.pow(exponent)),而是使用tempValue.movePointRight(exponent)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9932239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档