2017-04-26 9 views
0

나는 포트란에 대해 의심이있다. 다음 코드에서 :이중 포트란 정수

program p 
integer num 
real*8 d 
num=111 
d=dble(num/4) 
print*, d 
end program p 

나는 27.000000000000000이됩니다. 그것은 num이 정수이고 num/4가 같은 유형이어야하기 때문입니까? Matlab에서 번역해야하는 다른 코드의 일부입니다.이 경우에는 num/4로자를 수 있습니까?

floor(num/4) 

따라서 num\4는 정수,

+1

참고 * 실제 * 8을 사용하지 마십시오. 실제 * 8을 사용하지 마십시오. 실제로는 생각했던대로 작동하지 않을 수 있습니다. 'real (kind = rk)'표기법을 사용하고'selected_real_kind'로 종류 rk를 선택하십시오. 문제는, 당신이 부서 주변을 돌고 있다는 것입니다. 즉, 먼저 나누기가 수행되고 (두 인수가 정수이므로 정수 나누기) 결과를 실제로 캐스트합니다. 대신에 예를 들어'd = real (num, kind = rk)/4'를 할 수 있습니다. 더 나은, 아마도 이런 식으로 뭔가 :'d = 0.25_rk * num'. – haraldkl

답변

2

예, 당신이 num이 정수 27.000000000000000 때문에 얻을 사전에 감사합니다.

, 당신은 단순히

d=1./4*num 예, 매트랩이 별도로 지정하지 않는 한 배정 밀도 부동 소수점입니다 floor(num/4)num으로 될 작성합니다 겠다는 정밀한 결과를 얻을합니다.

+0

분명합니다. 고마워요! – scana

+0

또는 'num/4.' 등 – francescalus