2017-04-26 100 views
0

我對fortran有疑問。在下面的代碼中:fortran整數加倍

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) 

預先感謝您

+1

請注意,不要使用真實* 8,它可能不會真正做你認爲它的作用。使用'real(kind = rk)'符號並用'selected_real_kind'選擇類型rk。你的問題是,你做了這個部門的工作。也就是說,首先完成分割(這是一個整數除法,因爲兩個參數都是整數),然後將結果轉換爲實數。相反,你可以例如:'d = real(num,kind = rk)/ 4'。更好的是,也許是這樣的:'d = 0.25_rk * num'。 – haraldkl

回答

2

是的,你得到27.000000000000000因爲num是一個整數,從而num\4是一個整數。

得到真正的精度結果,你就簡單的寫d=1./4*num

是,在Matlab這將是floor(num/4)num是一個雙精度浮點數,除非另行指定。

+0

很明顯,謝謝! – scana

+0

或'num/4'等。 – francescalus