En Fortran> = 90, el mejor enfoque es utilizar las funciones intrínsecas para especificar la precisión que necesita - esto garantiza tanto la portabilidad y la que se obtiene la precisión que necesitas Por ejemplo, para obtener números enteros i y my_int que soportará al menos 8 dígitos decimales, se puede utilizar:
integer, parameter :: RegInt_K = selected_int_kind (8)
integer (kind=RegInt_K) :: i, my_int
Habiendo definido "RegInt_K" (o el nombre que elija) como un parámetro, se puede usar a lo largo tu código como un símbolo Esto también hace que sea fácil cambiar la precisión.
Solicitar 8 o 9 dígitos decimales normalmente obtendrá un entero de 4 bytes.
entero * 4 es una extensión común que se remonta al antiguo FORTRAN para especificar un entero de 4 bytes.
entero (4) o entero (RegInt_K) son abreviaturas para entero (tipo = 4) o entero (tipo = RegInt_K). integer (4) no es lo mismo que integer * 4 y no es portátil; el estándar de idioma no especifica los valores numéricos de los tipos. La mayoría de los compiladores usan el tipo = 4 para enteros de 4 bytes; para estos compiladores, el entero * 4 y el entero (4) proporcionarán el mismo tipo de entero; pero hay excepciones, por lo que el entero (4) no es portátil y es mejor evitarlo .
El enfoque para los reales es similar.
ACTUALIZACIÓN: si no desea especificar los tipos numéricos con la precisión requerida, sino el almacenamiento que usarán, Fortran 2008 proporciona un método. reales y números enteros pueden ser especificados por el número de bits de almacenamiento después de use
ing el módulo ISO_FORTRAN_ENV
, por ejemplo, para un entero de 4 bytes (32 bits):
use ISO_FORTRAN_ENV
integer (int32) :: MyInt
El manual gfortran tiene documentación bajo "intrínseca módulos ".
¡esa fue una explicación fabulosa! ¡maravilloso! ¡excelente! ahora lo tengo muy claro ...: D muchas gracias! – Sam