0

我有以下代码

double a = 29.0;
double b = 9.0;
double c = 4.0;
BigDecimal sum= new BigDecimal(0.0);
sum=sum.add(new BigDecimal(Math.log10((a)/(b*c) /Math.log10(2)));

我尝试使用 double 作为 sum 而不是 BigDecimal 但它给了我无穷大的结果。当我使用 BigDecimal 时,我没有得到任何结果,但错误提示:

线程“主”java.lang.NumberFormatException 中的异常:java.math.BigDecimal 处的 Infinite 或 NaN。(未知来源)

请提供任何帮助,因为这是我第一次处理大数字注意:a,b,anc c 值将通过循环更改,因此我必须保存总和。

4

1 回答 1

4

(a)/(b*c) /Math.log10(2)是负数,所以取它的对数给出NaN. 其实,这是胡说八道,不是消极的。我不知道你为什么会在那里得到一个例外。

看起来您实际上只是在尝试执行 log 2,在这种情况下,您只是将括号放在了错误的位置,

于 2013-01-19T11:45:20.167 回答