双精度变量值等于 NaN

本文关键字:NaN 变量值 双精度 | 更新日期: 2023-09-27 18:34:44

我在 c# 中有以下代码

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,但是当我在 Excel 中计算上述相同方程时Microsoft我得到的值等于 0.779331833

双精度变量值等于 NaN

Math.Sqrt(sum2)返回NaN,因为sum2为负

sum1 / NaN = NaN

无论如何,如果您想获得价值,请执行以下操作:

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

因为您的sum2将被-1,58870531971129E+18并且Math.Sqrt方法返回Negative值的NaN

这就是为什么您的fs1将被48433880,2431746 / NaN并且double / NaN回报NaN

阅读:7.7.2 除法运算符