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 :

toDouble tronque un nombre décimal


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 218
    Par défaut toDouble tronque un nombre décimal
    Bonjour,

    Je vous demande votre aide ici car je récupère un nombre entré par l'utilisateur (qui est en fait un texte récupéré d'un QTableWidget) puis je dois le convertir en double. Pour cela j'utilise la fonction toDouble. Cependant, il me tronque ma variable à 4 chiffres après la virgule alors que j'en ai 7.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
             if(!itemX || itemX->text().isEmpty() || !itemY || itemY->text().isEmpty() || !itemZ || itemZ->text().isEmpty())
            {
            }
            else
            {
                qDebug()<<itemX->text();
                qDebug()<itemX->text().toDouble();
                myPipe->geometry.push_back(point(itemX->text().toDouble(),itemY->text().toDouble(),itemZ->text().toDouble()));
            }
    En sortie:

    "-23.9944418" => ce que je voudrais avoir
    -23.9944 => ce que j'ai

    Comment est-ce que je peux faire pour conserver tous les chiffres après la virgule?

    Merci de votre aide.

    Cordialement

  2. #2
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 736
    Par défaut
    Bonjour.

    As-tu essayé de l'afficher autrement qu'avec qDebug ?
    Il s'agit soit d'un problème de précision de qDebug, soit d'un problème de toDouble().

    En C++ pur, il y a le même problème :
    std::cout << std::stod("-23.9944418"); //affiche -23.9944alors que
    std::cout << std::setprecision(10) << std::stod("-23.9944418"); //affiche bien -23.9944418.

    Au pire, remplace QString::toDouble() par QString::number().

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 218
    Par défaut
    Je vois pas bien comment utiliser QString::number dans mon cas étant donné que je cherche à convertir un QString en double et non l'inverse.
    J'ai pas essayé de d'utiliser autre chose que qDebug. En revanche, j'enregistre la variable avec QSettings et elle est aussi tronquée. Ce qui me laisse supposer que le problème ne vient pas de qDebug() mais bien de toDouble().

  4. #4
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 736
    Par défaut
    Citation Envoyé par Avatar36 Voir le message
    Je vois pas bien comment utiliser QString::number dans mon cas étant donné que je cherche à convertir un QString en double et non l'inverse.
    Oui je confond les fonctions, la fatigue…

    Il semblerai qu'on puisse forcer qDebug à utiliser une précision arbitraire.
    Le problème vient bel et bien de qDebug.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 218
    Par défaut
    Certes mais moi ce n'est pas qDebug() qui m'intéresse. Quand j'enregistre la variable avec QSetting elle est aussi tronquée et je souhaiterais que non.

  6. #6
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 736
    Par défaut
    Ça prouve que c'est pas le double en lui même qui est tronqué, mais son affichage. En mémoire la variable est pleine.
    La variable est aussi tronquée dans le fichier de configuration généré par QSettings ou c'est seulement dans le programme ?

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

Discussions similaires

  1. [MySQL] mettre nombre décimal en entier
    Par splouf dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 18/01/2006, 12h20
  2. Réponses: 4
    Dernier message: 21/12/2005, 12h20
  3. [VB.NET] Nombre décimal
    Par Sadneth dans le forum ASP.NET
    Réponses: 8
    Dernier message: 25/11/2005, 12h41
  4. insérer un nombre décimale dans une table
    Par mouloudéen dans le forum Access
    Réponses: 4
    Dernier message: 02/10/2005, 21h29
  5. CRITERIA - Représentation binaire d'un nombre décimal signé.
    Par RamDevTeam dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 10/08/2005, 14h56

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