2014-12-20 106 views
0

我在C#下面的代码双变量的值等于NaN的

double sum1= 0; 
double sum2=0; 
sum1=(a*b-bb*t1); 
sum2= (a*c-cc)*(a*t2-t3); 
Double fs1= sum1/Math.Sqrt(sum2); 

凡双变量的值是

a=19999 
b=65445.370449999828 
c=41.054005875599991 
bb= 126053.41368000521 
cc=15889463100.382524 
t1=9999.0 
t2=9999.0 
t3=99980001.0 

为什么我得到NaN值的双变量FS1,但当我在Microsoft Excel中计算上述相同的公式时,我得到的值等于0.779331833

+0

'sum2'是负的,但你”重新尝试取其平方根 – harold

+0

您必须在某处可能有错字。因为你的'sum2'被计算为一个负值,并且你不能将一个负数的平方根作为'Double'。 –

回答

0

因为您的sum2将是-1,58870531971129E+18Math.Sqrt method返回NaNNegative值。

这就是为什么你的fs1将是48433880,2431746/NaNdouble/NaN返回NaN

阅读:7.7.2 Division operator

+0

非常感谢所有的职位。 Actully。这是两个双数组之间的线性相关。如果我使用Sqrt内的Abs,最终结果将会改变。 –

+0

@ MehdiAcademic2014是的,因为'Abs'得到它的正值,结果不会再是'NaN'。 –

1

Math.Sqrt(sum2)回报NaN,因为如果你想获得价值反正做sum2为负

sum1/NaN = NaN 

这样的:

Double fs1 = sum1/Math.Sqrt(Math.Abs(sum2));