我的新Java程序中有一个小问题。我想用pq公式计算f`(x)= gx ^ 2 + hx ^ 2 + i的转折点,但我得到的唯一结果是“NaN”......
这是错误必须为的代码:
m = g/g; // I had already worked with the variables
n = h/g; // I am working with double
o = i/g;
p = -(n/2)+ Math.sqrt((n/2)*(n/2) -o); // pq-formula
String z = String.valueOf(p);
jLabel3.setText(z);
抱歉我的英语不好我来自德国:) 谢谢你的帮助!
答案 0 :(得分:0)
如果您给NaN
一个负数,则会返回Math.sqrt()
。您应该添加一项检查以确保o <= (n/2)*(n/2)
。
答案 1 :(得分:0)
让我们花点时间看看这里的操作员可以返回NaN
m = g/g;
n = h/g;
o = i/g;
只要g
,h
和i
是实际数字,m
,n
和o
就是实际数字太
Math.sqrt((n/2)*(n/2) -o)
来自Math#sqrt(double) javadoc页面:
&#34; 返回: a的正平方根。 如果参数为NaN或小于零,则结果为NaN。&#34;
所以你的问题可能在于(n/2)*(n/2) -o
在计算后是负数。
(n/2)*(n/2)
:无论n
是正面还是负面,这都是正面的,所以......
-o
您在此处减去o
,因此最可能的问题是o
更大 (n/2*(n/2)
1}},因此使计算为负,Math#sqrt(double)
返回NaN。
确保o
小于 1}},否则(n/2)*(n/2)
将返回 NaN 。