java.lang.NumberFormatException:在java.math.BigDecimal中为无限或NaN

java.lang.NumberFormatException:在java.math.BigDecimal中为无限或NaN,java,jakarta-ee,Java,Jakarta Ee,我有以下代码 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代替BigDecimal来表示sum,但结果是它给了我无穷大。当我使用BigDecimal时,我没有得到任何结果,但错误显示: 线程“main”java.lan

我有以下代码

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代替BigDecimal来表示sum,但结果是它给了我无穷大。当我使用BigDecimal时,我没有得到任何结果,但错误显示:

线程“main”java.lang.NumberFormatException中的异常:无限或NaN 位于java.math.BigDecimal。(未知源)

请帮忙,因为这是我第一次处理大数字 注:a、b、anc值将通过循环进行更改,因此我必须保存总和

(a)/(b*c)/Math.log10(2)
是负数,因此取该值的日志将给出
NaN
<事实上,这是胡说八道,不是负面的。我不知道你为什么会在那里遇到例外。

看起来你真的只是想做log2,在这种情况下,你只是把括号放错了地方,

(a)/(b*c)/Math。log10(2)
是负数,所以取它的日志会得到
NaN
<事实上,这是胡说八道,不是负面的。我不知道你为什么会在那里遇到例外。


看起来你真的只是想做log2,在这种情况下,你只是把括号放错了地方,

所以,我的问题就在括号里。非常感谢,我正在试着看看它是否有效。(我的程序每次运行都需要时间)因此,我的问题在括号中。非常感谢,我正在试着看看它是否有效。(我的程序每次跑步都需要时间)