在数组中查找NA

时间:2012-07-29 03:02:33

标签: fortran na

说,我希望一旦在数组中找到NA就停止例行程序。我怎么能这样做?

" if(array(i).eq.NA)..."好像不行。谢谢,

更新:

数组是浮点数的数组,例如,

REAL :: arrya(35)

2 个答案:

答案 0 :(得分:6)

如果你真的在寻找NaN并且你有一个最新的编译器,那么ieee_is_nan()函数就可以了。我认为你需要use ieee_arithmetic或其他一个内在的IEEE模块。

如果您的编译器不是那么新,它可能具有通常实现但非标准的isnan()函数。

答案 1 :(得分:2)

你的问题不是很受限制。 array是一个字符串数组吗? e.g。

character(len=20) :: array(40)

如果是这种情况,您应该可以这样做:

do i=1,40
   if(array(i).eq."NA")then
       exit
   else
       !do something else
   endif
enddo

如果这是一个浮点数的数组(并且NA被定义为某个浮点常数),您可能要小心,因为浮点运算很少是精确的,并且舍入误差会导致数学计算相当于实际评估到不同的值。换句话说,此问题的解决方案实际上取决于NAarray的声明方式......