2014-12-20 2 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 

나는, 이중 변수 FS1에 대한 NaN 값을 가지고 왜하지만, Microsoft Excel에서 위의 동일한 방정식을 계산할 때 나는 0.779331833과 동일한 가치를가집니다.

+0

'sum2' 부정적이지만 ' 그것의 제곱근을 취하려고 다시 시도하십시오 – harold

+0

어딘가에 오타가 있어야합니다. 귀하의'sum2'는 음의 값으로 계산되기 때문에 음수의 제곱근을'Double'으로 사용할 수 없습니다. –

답변

0

sum2-1,58870531971129E+18이고 Math.Sqrt method은 01을 반환하기 때문에값은입니다.

그래서 fs148433880,2431746/NaN이고는 NaN입니다.

읽기 : 당신이 값이 어쨌든 할 얻고 싶은 경우에 sum2

sum1/NaN = NaN 

7.7.2 Division operator

+0

모든 게시물을 대단히 감사합니다. 액 틀리. 이것은 두 개의 double 배열 간의 선형 상관 관계입니다. Sqrt 내부에 Abs를 사용하면 최종 결과가 변경됩니다. –

+0

@ MehdiAcademic2014 그렇습니다. 'Abs'가 양의 값을 얻고 결과가 NaN이 아니기 때문에 가능합니다. –

1

Math.Sqrt(sum2) 반환 NaN 때문에 :

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