간단한 질문입니다. 비슷한 질문이 있었지만, 내가 찾고있는 정확한 것을 얻지 못했습니다.실제 데이터 형식 fortran 90
Fortran 90 (ifort 컴파일러 사용)에서 실제 데이터 유형의 한계를 확인하고 있었기 때문에 실제 코드가 그 한계에 도달 할 수 있습니다. 테스트하기 위해 매개 변수 mval1 (코드 참조)에 2를 곱합니다. ifort 설명서에 취할 수있는 최대 값은 10E38이고 내 값은 이보다 훨씬 작습니다. 그러나 인쇄하는 동안 끝까지 무작위 숫자를 사용합니다 (출력은 하단에 표시됨). 사람이 이미 했어 해설에 추가하려면이
PROGRAM TEST
IMPLICIT NONE
REAL(KIND=8), PARAMETER :: mval1 = 1073E12
REAL(KIND=8) :: j
j = real(2*mval1)
PRINT *, j,mval1
END PROGRAM TEST
출력을 통해
2.146000005234688E+015 1.073000002617344E+015
부동 소수점 숫자와 관련된 정밀도의 손실이 나타납니다. [here] (http://floating-point-gui.de/) 또는 [여기] (http://perso.ens-lyon.fr/jean-michel.muller/goldberg.pdf) –
인텔 컴파일러 설명서 그것은 실제 (종류 = 8)에 대해 15-17 십진 정밀도를 말하는 것입니다. 나는 9 번째 자리를보고 있는데 여전히 작동하지 않는다 – Vaidyanathan
[부동 소수점 연산이 깨졌습니까?] (http://stackoverflow.com/questions/588004/is-floating-point-math-broken) –