C# 如何筛选出NaN值并用另一个值替换它

C# 如何筛选出NaN值并用另一个值替换它,c#,listview,nan,C#,Listview,Nan,iv'e尝试使用for循环过滤掉null和nan值,但仍然将nan值添加到listview中。这只是计算的一部分 double rs1 = (qz1 * c11) + (asg1 * c22) + (sw1 * c33) + (prj1 * c44) + (pxm1 * c55) + (atti1 * c66); if(rs1 != double.NaN || rs1 != null) { lst.SubItems.Add(Math.Round(rs1, 2).ToString()); } el

iv'e尝试使用for循环过滤掉null和nan值,但仍然将nan值添加到listview中。这只是计算的一部分

double rs1 = (qz1 * c11) + (asg1 * c22) + (sw1 * c33) + (prj1 * c44) + (pxm1 * c55) + (atti1 * c66);
if(rs1 != double.NaN || rs1 != null)
{
lst.SubItems.Add(Math.Round(rs1, 2).ToString());
}
else
{
lst.SubItems.Add("0");
}

不幸的是,当您使用double.NaN测试不等式时,它总是返回true(值本身未定义)。最好使用
double.IsNaN(rs1)

使用
IsNaN
静态函数,了解它

您的代码应该如下所示

if(!Double.IsNaN(rs1)  || rs1 != null)
NaN和NaN将始终返回false

两个NaN值被视为彼此不相等。因此,无法通过使用相等运算符将某个值与另一个等于NaN的值进行比较来确定该值是否不是数字


首先,它不能为null,因为double是值类型而不是引用类型null是多余的。其次,您应该使用方法,而不是使用
==

if(!double.IsNaN(rs1))
{
   ...
}
如果(!Double.IsNaN(rs1)(float x=0;x=(float)rs1;}

的可能重复