2012-07-29 4 views
0

말하자면, NA가 배열에서 발견되면 루틴을 중지하고 싶습니다. 어떻게해야합니까?배열에서 NA 찾기

"if (array (i) .eq. NA) ..."가 작동하지 않는 것처럼 보입니다. 덕분에,

UPDATE :.

배열은 부동 소수점 숫자의 배열, 예를 들어,

REAL :: arrya (35)

답변

6

당신이 정말로 NaN의 찾고있는 당신은 다음 ieee_is_nan() 기능이 트릭을해야 최신 컴파일러까지이있는 경우. 제 생각에는 use ieee_arithmetic이나 다른 내장 IEEE 모듈 중 하나가 필요합니다.

컴파일러가 새롭지 않은 경우 일반적으로 구현되었지만 표준이 아닌 isnan() 기능이있을 수 있습니다.

2

당신의 질문은 매우 잘 제한되어 있지 않은 것입니다. array은 문자열 배열입니까? 예 : 이 부동 소수점 숫자의 배열 (그리고 NA가 일정 ​​일부 부동 소수점으로 정의되어 있으면),

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

:이 경우

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

, 당신은 할 수 있어야한다 부동 소수점 연산이 거의 정확하지 않고 반올림 오류로 인해 실제로 수학적으로 다른 값으로 계산되는 계산이 발생할 수 있으므로주의해야 할 수 있습니다. 즉,이 문제에 대한 해결책은 정말에 따라 달라 NAarray 선언 ...

+0

죄송합니다. 더 구체적으로 말씀 드리겠습니다. "array"는 부동 소수점 숫자의 배열입니다. 답장을 보내 주셔서 감사합니다. –

+0

@ 라그랑주 -하지만 NA는 무엇입니까? 정의 된 가치입니까? 그것은 NaN입니까? – mgilson

+0

예, NaN입니다. –