使用if语句将数组中的nan值切换为0.0?

时间:2012-07-19 21:08:13

标签: c floating-point nan

我正在用点和点之间的向量进行一些计算,对于我来说,当点非常接近时我得到了纳,这并不奇怪。我现在要做的是清除数组中存储在数组中的所有nan值以及良好的数据。我希望只使用一些像这样的代码:

   if( angle[i] == nan ) { angle[i] = 0.0 };

至少这是我尝试过的,当我尝试时我会遇到错误。有没有人知道如何摆脱nan值并用0.0?

替换它们

2 个答案:

答案 0 :(得分:7)

假设这是C,则使用<math.h>中的isnan

#include <math.h>

if (isnan(angle[i]))
{
    angle[i] = 0.0;
}

答案 1 :(得分:5)

从我记忆中,在每种语言中,NaN都会将虚假与包括其自身在内的所有事物进行比较。您可以使用此行为来清除它:

if( angle[i] != angle[i] ) { angle[i] = 0.0 };

这看起来像C,C ++或Java;在所有这些中,这个技巧应该有效。