說,我想要一個例程在數組中找到NA時停止。我怎樣才能做到這一點?在數組中找到NA
「if(array(i).eq。NA)...」似乎不起作用。謝謝,
UPDATE:
陣列是浮點數的數組,例如,
REAL :: arrya(35)
說,我想要一個例程在數組中找到NA時停止。我怎樣才能做到這一點?在數組中找到NA
「if(array(i).eq。NA)...」似乎不起作用。謝謝,
UPDATE:
陣列是浮點數的數組,例如,
REAL :: arrya(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
聲明...
對不起,我應該更具體。 「數組」應該是一個浮點數的數組。感謝您的回覆。 – 2012-07-29 04:19:42
@Lagrange - 但什麼是NA?它是一個定義的值嗎?它是NaN嗎? – mgilson 2012-07-29 10:27:43
是的,它是NaN。 – 2012-07-30 01:17:42