2014-12-20 105 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));