0

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

“if (array(i) .eq. NA) ...” 似乎行不通。谢谢,

更新:

array 是浮点数数组,例如,

真实 :: 艾莉亚 (35)

4

2 回答 2

6

如果您真的在寻找NaNs 并且您拥有最新的编译器,那么该ieee_is_nan()函数应该可以解决问题。我认为您需要use ieee_arithmetic或其他固有 IEEE 模块之一。

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

于 2012-07-29T06:07:45.280 回答
2

你的问题没有很好的约束。是array字符串数组吗?例如

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

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

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

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

于 2012-07-29T03:41:51.983 回答