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

C 使用if语句将数组中的nan值切换为0.0?,c,floating-point,nan,C,Floating Point,Nan,我正在用点和点之间的向量做一些计算,当点非常接近时,我得到nan对我来说并不奇怪。我现在要做的是除去数组中存储在数组中的所有nan值以及良好的数据。我希望只使用以下代码: if( angle[i] == nan ) { angle[i] = 0.0 }; 至少这是我尝试过的,当我尝试的时候,我会出错。有人知道如何去掉nan值并用0.0替换它们吗?根据我的记忆,在每种语言中,nan都会将false与一切事物相比较,包括它自己。您可以使用此行为将其删除: if( angle[i] != an

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

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

至少这是我尝试过的,当我尝试的时候,我会出错。有人知道如何去掉nan值并用0.0替换它们吗?

根据我的记忆,在每种语言中,nan都会将false与一切事物相比较,包括它自己。您可以使用此行为将其删除:

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

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

假设这是C,然后从
使用:

#包括
if(isnan(角度[i]))
{
角度[i]=0.0;
}

修改标签以获得更好的答案。您使用的是什么语言?你会遇到什么错误?我没有尝试过你的方法,但我相信它也会起作用,我自己在寻找解决方案时遇到过几次这种方法,但不确定如何实现它。
x=x
通常比isnan(x)更快地检查nan。后者仅在避免引发浮点异常标志时有用,但如果您不关心/不使用浮点异常标志,
x=x
更好。isnan代表c99,isnan代表VisualCrelevant:这就成功了。我读到它总是返回false,但没有想过尝试。
#include <math.h>

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