Java pq公式不起作用,只有NaN

Java pq公式不起作用,只有NaN,java,nan,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.

我的新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);
对不起,我英语不好,我来自德国:)
谢谢你的帮助

如果给
Math.sqrt()
一个负数,将返回一个
NaN
。您应该包括一个检查,以确保
o让我们花一些时间,看看这里的哪些操作符可以返回一个NaN


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

只要
g
h
i
是实际数字,
m
n
o
也将是实际数字


数学sqrt((n/2)*(n/2)-o)

从 javadoc页面:

" 返回: a的正平方根。如果参数为NaN或小于零,则结果为NaN。“

因此,您的问题可能在于计算后,
(n/2)*(n/2)-o
是一个负数

(n/2)*(n/2)
:无论
n
是正数还是负数,它都将始终是正数,因此

-o
您在这里减去
o
,因此这里最可能的问题是
o
大于
(n/2*(n/2)
,因此使计算为负数,
Math#sqrt(double)
返回一个NaN

太长,读不下去了 确保
o
小于
(n/2)*(n/2)
,否则
Math.sqrt((n/2)*(n/2)-o)
将返回一个NaN