Format d'une variable en fortran

Discutez d'informatique ici !
MacManus
Membre Irrationnel
Messages: 1365
Enregistré le: 28 Avr 2008, 15:41

format d'une variable en fortran

par MacManus » 17 Sep 2014, 16:28

Salut !

Si quelqu'un ici pratique un peu le fortran, j'aimerais bien un petit coup de pouce...
Je cherche à écrire une variable réelle (VAR) mais seulement avec 5 chiffres significatifs.

REAL : : VAR (je déclare VAR)
READ( hdr, * ) VAR ( 'hdr' correspond au header d'un fichier où est lue VAR. ici j'ai VAR = 10955.000 )
VAR = VAR * 0.00001 (j'effectue cette opération sur VAR)

j'obtiens un résultat du style VAR = 0.10955000 et je voudrais un truc du style VAR = 0.10955

quand je fais ensuite un WRITE( * , FMT = ' (F7.5) ' ) VAR
j'ai bien VAR = 0.10955 printé à l'écran, mais seulement je ne sais pas comment convertir VAR avec ce format !! ça me fait juste un print à l'écran, mais je n'ai pas modifié ma variable en conséquence...
Quelle est la syntaxe ??

Merci!



Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 08:03

par ampholyte » 17 Sep 2014, 16:53

Bonjour,

D'après ce que j'ai pu lire ne pourrais pas-tu écrire :
Code: Tout sélectionner
REAL :: VAR
READ(hdr, '(e12.5)') VAR


e12 => nombre de caractère à lire
5 => le nombre de caractère pour la mantisse

Si tu écris
Code: Tout sélectionner
READ(hdr, '(e5.0)') VAR


Est-ce que cela ne règlerait pas ton problème ?

D'ailleurs pourquoi est-ce que les zéros te dérangent pour la suite ?

Autre solution pourquoi ne pas stocker ta lecture dans un integer puis le diviser

MacManus
Membre Irrationnel
Messages: 1365
Enregistré le: 28 Avr 2008, 15:41

par MacManus » 17 Sep 2014, 17:15

merci pour ta réponse ampholyte.

mais... ça ne marche pas, que je spécifie '(e5.0)' ou pas, j'ai toujours des 0 qui courrent derière.
En fait dans mes calculs je ne veux pas bcp de chiffres significatifs, mais c'est mon choix, sinon effectivement ça ne pose pas de pb.

Si je déclare cette variable en "integer", le problème vient du fait que je divise ensuite par 100000 pour obtenir 0.10955000. Du coup il va l'interpréter comme étant tout bonnement égal à 0.

Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 08:03

par ampholyte » 18 Sep 2014, 08:45

En fait je pensais plutôt à stocker ton nombre dans un int puis dans une autre variable (REAL cette fois-ci) pour stocker le résultat de la division.

As-tu essayé de reconvertir ton nombre en chaine de caractères ? Puis de le récupérer de nouveau ?

Dernière solution, ne peux-tu pas travailler avec les variables de départ et uniquement en fin de programme effectuer ta division. Cela te permettrait de conserver le nombre de chiffres significatifs sans obtenir de 0 superflux.

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite