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 :

Problème de comparaison


Sujet :

Fortran

  1. #1
    Membre éclairé Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Points : 717
    Points
    717
    Par défaut Problème de comparaison
    Bonjour à tous,

    Voilà je suis la victime d'un bug curieux. Mais avant de me lancer dans les explications, voici mon code où le problème survient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                where(presence(1,:).eq.horlogeVar)recherchePresence(:)=presence(0,:)
    HorlogeVar (real(8)) représente le temps qui s'incrémente de 0.2 en 0.2, recherchePresence et presence sont des tableaux de real(8) allocatable.

    presence(1,: ) contient tous les pas de temps possibles [0,0.2,0.4,0.4...]. Mon problème provient de la condition dans le where, tout fonctionne pour les premiers pas de temps, mais à partir de horlogeVar = 1.2 la condition n'est jamais respecté...

    J'ai alors testé ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    write(*,*)presence(1,6),' ',horlogeVar
    if(presence(1,6).eq.horlogeVar) then
    write(*,*)'ok'
    endif
    et à l'écran j'obtient 1.20000000 1.20000000 mais pas de ok?

    Ma condition devrait être respectée pourtant, non? Puisque 1.200000=1.200000 en toute logique...

    Quelqu'un aurait-il une idée d'où peut venir le problème? Je suis à l'écoute de toute les suggestions...

    Encore merci de vous être penchés sur mon problème,

    @+.
    For crying out loud !

  2. #2
    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
    Points : 1 346
    Points
    1 346
    Par défaut
    (J'ai lu en diagonale seulement)

    Est-il possible que le problème soit simplement que ton code est sensible à la précision / représentation des réels?

    Essai de convertir la condition real1 == real2 en abs(real1-real2) < epsilon

  3. #3
    Membre éclairé Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Points : 717
    Points
    717
    Par défaut
    Merci beaucoup, c'est exactement ça...

    Le pire c'est que je revois bien ma prof d'info me martelant "on ne fait jamais une égalité sticte entre deux réél! Toujours prendre la valeur absolue de leur différence et la comparer à un epsilon choisit!". Comme quoi j'aurais peut-être du plus écouté.

    Encore merci,

    @+.
    For crying out loud !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/03/2006, 12h39
  2. Réponses: 11
    Dernier message: 22/03/2006, 21h57
  3. problème de comparaison table dans requète.
    Par Sendo dans le forum Access
    Réponses: 8
    Dernier message: 09/03/2006, 11h10
  4. Problème de comparaison (chez lycos)
    Par Tuscelan dans le forum Langage
    Réponses: 4
    Dernier message: 10/11/2005, 18h13
  5. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 21h43

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