说,一旦在数组中找到 NA,我希望例程停止。我怎样才能做到这一点?
“if (array(i) .eq. NA) ...” 似乎行不通。谢谢,
更新:
array 是浮点数数组,例如,
真实 :: 艾莉亚 (35)
如果您真的在寻找NaN
s 并且您拥有最新的编译器,那么该ieee_is_nan()
函数应该可以解决问题。我认为您需要use ieee_arithmetic
或其他固有 IEEE 模块之一。
如果您的编译器不是那么新,它可能具有通常实现但非标准的isnan()
功能。
你的问题没有很好的约束。是array
字符串数组吗?例如
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
声明......