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

Qt Discussion :

QList de doubles, entiers et décimales


Sujet :

Qt

  1. #1
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 41
    Points : 393
    Points
    393
    Par défaut QList de doubles, entiers et décimales
    Hello tout le monde, étant nouveau ici c'est mon premier message sur ce site; même si je l'ai souvent visité.


    Voila mon problème, dans un projet Qt4, j'ai une classe NumericDiscretParameter qui contient entre autres (dans le .h)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    double value;
    QList<double> possibleValues;//liste de valeurs que value peut rendre
    Et une méthode (dans le .cpp):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    bool NumericDiscretParameter::isValid(double v)
    {
        if(this->possibleValues.contains(v))
        {
            this->value = v;
            this->currentInd = this->possibleValues.indexOf(v);
            this->recorded=false;
            emit changed();
            return true;
        }
        return false;
    }
    Tout ce passe bien tant que possiblesValues ne contient que des entiers (des types double mais entier). Mais quand je commence à ajouter des nombres à virgule, la méthode QList::contains() a un drôle de comportement et me renvoi tout le temps false;

    Pourtant j'ai fait afficher toutes les valeurs contenues dans la QList et la valeur que je cherche est bien dedans.
    Quelqu'un a déjà vu ça? Parce que là ça reste un mystère


    Merci pour vos lumières.

  2. #2
    Rédacteur/Modérateur
    Avatar de arnolddumas
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Autriche

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 978
    Points : 7 764
    Points
    7 764
    Par défaut
    C'est pas une bonne idée de faire des tests d'égalité entre float ou double.
    Ton souci vient de la façon dont les nombres sont représentés en mémoire.

    Voila des pistes :


  3. #3
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 41
    Points : 393
    Points
    393
    Par défaut
    Exact, j'avais oublié cette subtilité sur les doubles, merci je pense que je vais utiliser la méthode de l'epsilon

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut
    Une petite série d'articles sur justement ces nombres en virgule flottante, potentiellement utile pour éviter d'ajouter des epsilons un peu partout, sans trop savoir ce qu'on fait : http://www.altdevblogaday.com/2012/0...-100-digits-2/.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

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

Discussions similaires

  1. Convertir un double en expression décimale
    Par olibara dans le forum C#
    Réponses: 6
    Dernier message: 17/02/2010, 18h31
  2. Parse de double avec point décimal
    Par olibara dans le forum C#
    Réponses: 7
    Dernier message: 28/11/2009, 08h59
  3. Conversion double binaire vers décimal
    Par mess-mate dans le forum C++
    Réponses: 17
    Dernier message: 07/12/2008, 00h44
  4. Validation de Double - séparateur de décimal
    Par vano dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 12/10/2006, 14h36
  5. Problème pywt - PIL (double/entiers)
    Par progfou dans le forum Calcul scientifique
    Réponses: 17
    Dernier message: 29/09/2006, 00h29

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