我们有定时采集数据的时间流,但在某些时候没有采集数据,因此我们在此时将QNAN放入数组中.唯一的问题是,每当我们对数据进行任何统计时,每次我们访问某个位置时都要检查它是不是NAN.所以我们的平均惯例看起来像
int n = 0;
double sum = 0;
for(int i = 0; i < SIZE; i++)
{
if(data[i] == data[i])
{
sum += data[i];
n++;
}
}
Run Code Online (Sandbox Code Playgroud)
我们可能总是将不得不算楠的,但将是很好,如果有一个跟你说,如果你添加一个无效的值设置为有效数量,有效数量保持不变.
我不确定是否有更好的方法,但想检查一下.谢谢,詹姆斯
由于NANs上的算术不能满足你的需要,你不能用NAN做你所要求的.包含NAN操作数的加法结果是NAN.
您正在寻找附加的身份.这意味着你需要在数组中加零.现在,如果你这样做,那么你将不得不跟踪哪些元素无效并相应地处理它.但是,如果您希望能够对值数组求和,并且某些值没有贡献,那么您唯一的选择是将这些值设置为零.
坦率地说,我认为您当前的解决方案与您将获得的一样好,模块化使用std :: isnan()来检查NAN.