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");
}
答案 0 :(得分:4)
使用IsNan
静态函数,阅读它here
您的代码应如下所示
if(!Double.IsNaN(rs1) || rs1 != null)
带NaN的NaN将始终返回false this is MSDN about NaN
两个NaN值被认为彼此不相等。因此,通过使用相等运算符将其与另一个等于NaN的值进行比较,无法确定值是否为数字
答案 1 :(得分:1)
不幸的是,当你使用double.NaN测试不等式时,它总是返回true(值本身是未定义的)。最好使用double.IsNaN(rs1)
。
答案 2 :(得分:1)
首先,它不能为null,因为double是值类型而不是引用类型。所以rs1 != null
是冗余的。第二,你应该使用IsNaN
方法而不是检查与==
的相等性< / p>
if(!double.IsNaN(rs1))
{
...
}
答案 3 :(得分:0)
if(!Double.IsNaN(rs1)(float x = 0; x = (float)rs1;}