pq-formula不起作用,只有NaN

时间:2014-05-13 15:29:16

标签: java nan

我的新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);

抱歉我的英语不好我来自德国:) 谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

如果您给NaN一个负数,则会返回Math.sqrt()。您应该添加一项检查以确保o <= (n/2)*(n/2)

答案 1 :(得分:0)

让我们花点时间看看这里的操作员可以返回NaN

m = g/g; n = h/g; o = i/g;

只要ghi是实际数字,mno就是实际数字太

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。

TL; DR

确保o 小于 (n/2)*(n/2)将返回 NaN