Dans Fortran> = 90, la meilleure approche est d'utiliser les fonctions intrinsèques pour spécifier la précision dont vous avez besoin - ce qui garantit à la fois la portabilité et que vous obtenez la précision dont vous avez besoin. Par exemple, pour obtenir des entiers i et my_int qui soutiendra au moins 8 chiffres décimaux, vous pouvez utiliser:
integer, parameter :: RegInt_K = selected_int_kind (8)
integer (kind=RegInt_K) :: i, my_int
Après avoir défini « RegInt_K » (ou quel que soit le nom que vous sélectionnez) comme paramètre, vous pouvez l'utiliser tout au long votre code comme un symbole. Cela facilite également la modification de la précision.
Demander 8 ou 9 chiffres décimaux obtiendra généralement un entier de 4 octets.
entier * 4 est une extension courante qui retourne à l'ancien FORTRAN pour spécifier un entier de 4 octets.
nombre entier (4) ou nombre entier (RegInt_K) sont des nombres entiers (type = 4) ou des nombres entiers (type = RegInt_K). integer (4) n'est pas le même que integer * 4 et n'est pas portable - la norme de langage ne spécifie pas les valeurs numériques des genres. La plupart des compilateurs utilisent le type = 4 pour les entiers de 4 octets - pour ces compilateurs entier * 4 et entier (4) fournira le même type entier - mais il y a des exceptions, donc entier (4) est non portable et mieux évité .
L'approche pour les réels est similaire. MISE À JOUR: si vous ne voulez pas spécifier les types numériques avec la précision requise, mais plutôt avec le stockage qu'ils utiliseront, Fortran 2008 fournit une méthode. réels et les entiers peuvent être spécifiés par le nombre de bits de stockage après use
ing le module ISO_FORTRAN_ENV
, par exemple, pour un nombre entier de 4 octets (32 bits):
use ISO_FORTRAN_ENV
integer (int32) :: MyInt
Le mode d'gfortran a documentation sous « intrinsèque modules".
c'était une explication fabuleuse! étourdissant! excellent! c'est clair pour moi maintenant ..: D merci beaucoup! – Sam