我有一段Fortran代碼,並且我的Fortran編輯器(Force 2.0.9)無法理解該代碼中的以下行。Fortran中的變量類型
real(kr8) :: rnum
我找不到任何關於這種類型的變量聲明。 (kr8)是什麼意思?如果有人能向我解釋,我真的很感激嗎?
我有一段Fortran代碼,並且我的Fortran編輯器(Force 2.0.9)無法理解該代碼中的以下行。Fortran中的變量類型
real(kr8) :: rnum
我找不到任何關於這種類型的變量聲明。 (kr8)是什麼意思?如果有人能向我解釋,我真的很感激嗎?
這是短爲:
real(kind=kr8) :: rnum
在這種情況下,變量或參數kr8
在代碼的其他地方指定 - 這條線以上,如果在相同的步驟,或以不同的文件,如果它是通過訪問一個模塊。從它的名字,可以假設kr8
是這樣定義的,它有一種雙精度浮點數(8字節大小)的某種編譯器。
請參閱Fortran編譯器文檔,瞭解kind
參數對於各種精度和範圍的整數和實數變量可以採用的值。如果你使用強制,你的編譯器是gfortran,g95或g77。參數kind
是引入到Fortran 90的一項功能,如果您的編譯器爲g77,則可能無法使用此參數進行編譯。
對這個SO問題的回答也將有助於閱讀:Fortran 90 kind parameter。
'g77'支持'TYPE(KIND = kind)'作爲FORTRAN 77的擴展。但它不理解Fortran 90的_type-declaration-stmt_中的'::'分隔符。 – 2012-08-03 08:21:17
@HristoIliev謝謝,我不知道這個擴展。 – milancurcic 2012-08-03 15:05:16
以下是關於在Fortran> = 90中聲明變量的幾種方法的回答:Fortran: integer*4 vs integer(4) vs integer(kind=4)。請參閱Extended double precision瞭解它如何與真實變量一起工作。
'Force 2.0.9'有不同的編譯器有幾個[download options](http://lepsch.blogspot.de/2009/05/downloads.html)。我建議你用'gfortran'獲得一個,並且從FORTRAN 77的世界轉移到Fortran 90+的更好的世界。 – 2012-08-03 08:23:25