문제

예를 들어 배열에서 NA가 발견되면 루틴을 중지하고 싶습니다.어떻게 해야 하나요?

"if (배열(i) .eq.NA) ..."가 작동하지 않는 것 같습니다.감사해요,

업데이트:

array는 부동 소수점 숫자의 배열입니다. 예:

진짜 ::아리야(35)

도움이 되었습니까?

해결책

정말 찾고 계시다면 NaNs 그리고 당신은 최신 컴파일러를 가지고 있으며 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 선언됐다...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top