在Fortran>=90中,最好的方法是使用內(nèi)部函數(shù)來指定所需的精度-這既保證了可移植性,也保證了所需的精度。例如,獲取整數(shù)i
和my_int
這將支持至少8個(gè)小數(shù)位數(shù),您可以使用:
integer, parameter :: RegInt_K = selected_int_kind (8)
integer (kind=RegInt_K) :: i, my_int
已定義RegInt_K
(或您選擇的任何名稱)作為parameter
,您可以在整個(gè)代碼中使用它作為符號(hào)。這也使得更改精度變得容易。
請(qǐng)求8或9個(gè)小數(shù)位數(shù)通常會(huì)得到一個(gè)4字節(jié)的整數(shù).
integer*4
是一個(gè)常見的擴(kuò)展,可以追溯到舊的FORTRAN來指定一個(gè)4字節(jié)的整數(shù)。雖然,這個(gè)語法不是而且從來都不是標(biāo)準(zhǔn)的Fortran。
integer (4)
或integer (RegInt_K)
是縮寫integer (kind=4)
或integer (kind=RegInt_K)
. integer (4)
與integer*4
而且是不可移植的-語言標(biāo)準(zhǔn)沒有指定種類的數(shù)值。大多數(shù)編譯器使用kind=4
用于4字節(jié)整數(shù)-用于這些編譯器integer*4
和integer(4)
將提供相同的整數(shù)類型-但也有例外,因此integer(4)
是不可攜帶的,最好避免。
REALS的方法也是類似的。
更新:如果您不想按照所需的精度指定數(shù)字類型,而是通過它們將要使用的存儲(chǔ)來指定數(shù)字類型,則Fortran 2008提供了一個(gè)方法。reals和整數(shù)可以由后面的存儲(chǔ)位數(shù)指定。use
使.ISO_FORTRAN_ENV
模塊,例如,對(duì)于一個(gè)4字節(jié)(32位)整數(shù):
use ISO_FORTRAN_ENV
integer (int32) :: MyInt
gfortran手冊(cè)在“內(nèi)部模塊”下有文檔。