我如何过滤掉 NaN 值并将其替换为另一个值

Posted

技术标签:

【中文标题】我如何过滤掉 NaN 值并将其替换为另一个值【英文标题】:how can i filter out NaN values and replace it with another value 【发布时间】:2014-02-08 10:46:19 【问题描述】:

我尝试使用 for 循环过滤掉 null 和 nan 值,但仍然将 nan 值添加到列表视图中。这只是计算完成的部分。

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");

【问题讨论】:

Why is double.NaN not equal to itself? 的可能重复项 【参考方案1】:

使用IsNan静态函数,阅读它here

你的代码应该是这样的

if(!Double.IsNaN(rs1)  || rs1 != null)

带有 NaN 的 NaN 将始终返回 false,this is MSDN about NaN

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

首先,它不能为null,因为double是值类型而不是引用类型。所以rs1 != null是多余的。其次你应该使用IsNaN方法而不是用==检查相等性

if(!double.IsNaN(rs1))

   ...

【讨论】:

【参考方案4】:

if(!Double.IsNaN(rs1)(float x = 0; x = (float)rs1;

【讨论】:

以上是关于我如何过滤掉 NaN 值并将其替换为另一个值的主要内容,如果未能解决你的问题,请参考以下文章

如何删除python中的打印文本并将其替换为另一个文本[重复]

如何在python中替换NaN值[重复]

如何在熊猫中用 NaN 替换浮点值?

如何增加列表并将某些值替换为其计数

如何根据其他列的某些值替换列的nan值

熊猫如何使用 groupby 将 NaN 值替换为平均值 [重复]