2012-04-25 1 views
0
INTEGER, PARAMETER :: SINGLE=SELECTED_REAL_KIND(7) 
REAL(KIND=SINGLE) :: K 
REAL::X 
... 
K=X 
WRITE(*,*) K 

SELECTED_REAL_KIND 안에 5 또는 6을 쓰면 6 개의 유효 숫자가 출력되지만 7을 시도하면 7보다 큰 값이 출력됩니다. 이유를 말해 줄 수 있습니까? 내가 잘못한 곳? 배정 문제가 있습니까? 7 출력 -> 1.3925623893FORTRAN90에서 내 결과의 7 자리 숫자를 어떻게 얻을 수 있습니까?

좋아요와

5

6> 1.39256

출력 - 나는 간단한 질문을 부탁 해요. 어떻게하면이 숫자의 7 자리 유효 숫자를 출력 할 수 있습니까? 1.3925623893 ? gfortran의 문서에서

+0

이 될 것이다 – CharlesB

+0

출력 값을 표시하는 데 유용합니다. x 및/또는 k에 원래 할당 된 값을 확인하는 데 도움이됩니다. 1.3925623893 값은 나에게 아무런 의미가 없습니다. – Rook

답변

1

:

SELECTED_REAL_KIND (P, R)는

적어도 중요 적어도 P 숫자의 소수점 정밀도로 실제 데이터 타입의 종류 값을 반환 . 부동 소수점 숫자는 대부분 4 바이트 (단 정밀도) 또는 8 바이트 (배정도)를 사용하여 저장되며 그게 전부입니다. 그것은 6에서 7 개의 유효 숫자를 묻는 것에서 실제로 더 많은 수치를 더합니다 : 당신은 단 정밀도에서 배정도로 전환했습니다.

은 여러분이 진정으로 원하는 것은 여러분이 원하는 정밀도를 저장할 수있을만큼 진짜 큰이, 당신은 이미 행한 올바르게, 다음 표시 같은 형식을 사용하는 경우에만 7 유효 숫자 :

write(*,'(F12.7)') K