Une autre façon de procéder consiste à spécifier explicitement la précision souhaitée dans la variable à l'aide de l' intrinsèque SELECTED_REAL_KIND , puis à l'utiliser pour définir et initialiser les variables. Quelque chose comme:
INTEGER, PARAMETER :: dp = SELECTED_REAL_KIND(15)
REAL(dp) :: x
x = 1.0_dp
Un bon avantage à le faire de cette façon est que vous pouvez stocker la définition de dpdans un module, puis USEce module si nécessaire. Maintenant, si vous voulez changer la précision de votre programme, il vous suffit de changer la définition de dpcet endroit au lieu de rechercher et de remplacer tous les D0s à la fin de vos initialisations de variables. (C'est aussi pourquoi je recommanderais de ne pas utiliser la 1.0D-1syntaxe pour définir Y comme suggéré. Cela fonctionne, mais rend plus difficile la recherche et la modification de toutes les instances à l'avenir.)
Cette page du Fortran Wiki donne de bonnes informations supplémentaires sur SELECTED_REAL_KIND.
C'est vrai, cela devrait être l'approche standard.
Ondřej Čertík
Et à quelle fréquence les gens doivent-ils vraiment changer la précision de leurs programmes à l'aveugle sans passer de procédure en procédure de toute façon et sans tester? La principale raison d'utiliser le _dpschéma est que la précision est clairement définie de manière portable.
ja72
12
Vous avez déclaré les variables en double précision, mais vous les avez initialisées avec des valeurs de simple précision.
Vous auriez pu écrire:
X=1.0d0
Y=1.0d-1
La réponse de Barron ci-dessous est une autre façon de créer une double précision littérale, avec l'avantage qu'elle vous permet de modifier la précision de vos variables ultérieurement.
_dp
schéma est que la précision est clairement définie de manière portable.Vous avez déclaré les variables en double précision, mais vous les avez initialisées avec des valeurs de simple précision.
Vous auriez pu écrire:
La réponse de Barron ci-dessous est une autre façon de créer une double précision littérale, avec l'avantage qu'elle vous permet de modifier la précision de vos variables ultérieurement.
la source