IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

Stupéfaction dans un format !


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Par défaut Stupéfaction dans un format !
    Bonjour, voici un code tout simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    program test
      implicit none
     
      double precision :: a = 10.d0, b = 45.3543d12, c = 74.d0
     
      write(*,"(F8.3,1pD16.4,F8.3)") a, b, c
      write(*,"(F8.3,D16.4,F8.3)") a, b, c
     
    end program test
    Dans le premier write je met dans le format le 1p pour avoir un chiffre avant la virgule. Jusque là rien d'anormal. Regardez la sortie fait un peu peur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    > a.out
      10.000      4.5354D+13 740.000
      10.000      0.4535D+14  74.000
    J'ai la même chose avec ifort et gfortran. C'est un truc écrit dans la norme ou c'est un bug de compilateur ?

  2. #2
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    Je ne vois pas ce qui te fait peur. Dans le manuel de référence de mon Compaq Fortran, je lis:
    • For F editing, the external value equals the internal value of the I/O list item multiplied by 10^k. This changes the magnitude of the data.
    • For E and D editing, the external decimal field of the I/O list item is multiplied by 10^k, and k is substracted from the exponent. this changes the form of the data.

    Jean-Marc Blanc

  3. #3
    Membre émérite
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Par défaut
    Ce qui me surprend beaucoup c'est la 3eme colonne. Sur la deuxième colonne (où j'applique le format 1p) aucun souci. Le format est correct.

    Par contre le chiffre de la 3eme colonne est faux ce qui est plus embétant.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Par défaut
    C'est que tu ne comprends pas la règle pour les scaling factor P. Le format P n'est pas un préfixe applicable à un masque D ou E, c'est un masque qui change la représentation à partir de là. Le nouveau comportement s'applique donc jusqu'à la fin du format, ou jusqu'à ce qu'un nouveau P soit défini.

  5. #5
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    Par contre le chiffre de la 3eme colonne est faux ce qui est plus embétant
    Ce n'est pas un chiffre, mais un nombre: un chiffre est seulement un caractère typographique.
    Jean-Marc Blanc

  6. #6
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    si j'ai bien compris, le "1p s'applique jusqu'à la fin de la définition du format donc
    "(F8.3,1pD16.4,F8.3)" = "(F8.3,1pD16.4,1pF8.3)"
    et 1pF8.3 nous donne en fait 10^1*<nombre à afficher>
    et comme on demande un format F, il n'affiche pas l'exposant... et donc le résultat semble faux... c'est bien ça?

    au fait, au lieu de "1pD16.4" tu ne peux pas utiliser "ES16.4"? (par contre l'exposant est affiché avec un E et non un D)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/02/2008, 14h18
  2. exporter dans un format avec des insert into
    Par kurkLord dans le forum Oracle
    Réponses: 2
    Dernier message: 12/06/2006, 11h43
  3. [VB] Recuperer nombre dans zone formater monétaire
    Par zejo63 dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 07/02/2006, 11h04
  4. [JSP] mettre une chaine dans un format precis
    Par logica dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/06/2005, 10h21
  5. Comparaison de 2 dates dans des formats différents
    Par frdek dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/02/2005, 15h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo