Java pq公式不起作用,只有NaN
我的新Java程序有一个小问题。我想用pq公式计算f`(x)=gx^2+hx^2+I的转折点,但我得到的唯一结果是“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.
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