说,我希望一旦在数组中找到NA就停止例行程序。我怎么能这样做?
" if(array(i).eq.NA)..."好像不行。谢谢,
更新:
数组是浮点数的数组,例如,
REAL :: arrya(35)
答案 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被定义为某个浮点常数),您可能要小心,因为浮点运算很少是精确的,并且舍入误差会导致数学计算相当于实际评估到不同的值。换句话说,此问题的解决方案实际上取决于NA
和array
的声明方式......