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 :

Conversion Réel - Double


Sujet :

Fortran

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Conversion Réel - Double
    Bonjour,

    j'ai un problème de conversion de réel à double précision en Fortran 90 : au delà de la 6ème digit au lieu de me mettre des 0, Fortran me mets de chiffres qui me conduisent à des décalages dans mes résultats :

    Exemple : 6.555555 devient 6.555555091245 au lieu de 6.555555000000

    connaissez vous un moyen d'avoir une conversion exact ??

    Merci d'avance

  2. #2
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    La solution la plus propre est d'eviter le transtypage REAL*4 vers REAL*8, et de travailler toujours en double precision. Ce n'est helas pas toujours possible, notamment pour des raisons de stockage de donnees.
    Sinon, je ne vois pas de solution a ton probleme. De toute facon, si tu travailles a une precision de 10-6, cela ne devrait pas etre embetant (les autres chiffres sont insignifiants).
    Enfin, il y a peut etre une option de compilation qui adresse ce probleme, cf. la documentation de ton compilateur.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    je te confirme que pour des raisons de stockage je dois tout d'abord travailler en simple précision, en revanche pour la suite je dois passer en double et du coup les chiffres ajouté ne sont plus insignifiant.

  4. #4
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Il n'y a pas de solution generale a ton probleme. Un ordinateur n'est pas capable de representer un ensemble continu de nombres, donc les reels sont representes comme une suite de valeurs discretes, et on travaille sur la valeur la plus proche.
    Note que ton 6.555555091245 est bien egal a 6.55555[5]. Tu dois t'imposer une precision. Puisque tes donnees sont a l'origine precise a 10-6, tous les chiffres qui suivent sont non significatifs. Donc si tu multiplies par 100, par exemple, ta precision (apres la virgule) devient 10-4. Si tu veux une meilleure precision, alors des donnees en entree doivent etre de type REAL*8 (ou plus).

Discussions similaires

  1. [VB.NET] Conversion de String en Double
    Par JB-Tech dans le forum Windows Forms
    Réponses: 9
    Dernier message: 26/02/2018, 07h32
  2. Réponses: 23
    Dernier message: 09/09/2010, 13h11
  3. Trame Hexa et conversion de byte en double
    Par vtk37 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 28/09/2009, 23h22
  4. C entrée standard et conversion de chaine en double
    Par astroflo dans le forum Débuter
    Réponses: 3
    Dernier message: 11/11/2008, 18h27
  5. Conversion 8 octets en double
    Par Invité dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 09/08/2004, 16h49

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