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

Lin*_*les 3 c floating-point nan

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

   if( angle[i] == nan ) { angle[i] = 0.0 };
Run Code Online (Sandbox Code Playgroud)

至少那是我尝试过的,当我尝试时我会遇到错误.有没有人知道如何摆脱nan值并用0.0替换它们?

Pau*_*l R 7

假设这是C,那么使用isnan来自<math.h>:

#include <math.h>

if (isnan(angle[i]))
{
    angle[i] = 0.0;
}
Run Code Online (Sandbox Code Playgroud)

  • `isnan`虽然更具可读性和自我记录功能. (3认同)

Wug*_*Wug 5

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

if( angle[i] != angle[i] ) { angle[i] = 0.0 };
Run Code Online (Sandbox Code Playgroud)

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