我想总结10个双变量,但是这些变量中的一些可能包含" NaN"。有没有办法忽略那些" NaN"从总结。现在我有一个简单的添加,如下所示,但它分配SumLiq ..变量" NaN"值。
double SumLiqPerTimeStamp = l2_msg.size0 + l2_msg.size1 + l2_msg.size2 + l2_msg.size3
+l2_msg.size4 + l2_msg.size5 + l2_msg.size6 + l2_msg.size7 + l2_msg.size8 + l2_msg.size9;
是否有一种快速有效的方法来检查" NaN"而不通过每个的if语句?
答案 0 :(得分:3)
NMaybe你可以将它们放在一个数组中并获得Sum()
:
double SumLiqPerTimeStamp = new double[]{ l2_msg.size0 , l2_msg.size1 , l2_msg.size2 , l2_msg.size3
,l2_msg.size4 , l2_msg.size5 , l2_msg.size6 , l2_msg.size7 , l2_msg.size8 , l2_msg.size9 }.Where( x => !double.IsNaN(x) ).Sum();
答案 1 :(得分:1)
如果输入为NaN,则使用返回零的扩展方法:
public static double Value(this double input)
{
return input == Double.NaN ? 0 : input;
}
然后将您的值汇总为
var sum = l2_msg.size0.Value() + l2_msg.size1.Value() + ...
答案 2 :(得分:0)
将属性Size
添加到msg
类型,该类型将在返回前检查该值,如果是NaN则返回0.