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

Discussion :

Gestion d'entiers issus d'un QSpinBox

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Par défaut Gestion d'entiers issus d'un QSpinBox
    Bonjour,

    je suis en train de corriger des bug d'un logiciel. et j'ai actuellement un problème d'arrondi d'entier.

    Pour être plus précis:
    j'ai un qspinbox qui donne la valeur d'un tarif en décimal. l'utilisateur peut modifier dans l'interface ce tarif.

    je récupère la valeur du spinbox et la convertis en entier (pour la stocker en base de données) Mais lors de cette conversion les valeurs changent parfois : Par exemple si je rentre 2,01 la conversion me donne 200 et enregistre 200 en base de données.

    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t.tauxHoraire = (quint64)(ui->spTauxHoraire->value()*100.00);
    j'ai inséré des QDebug dont voici un exemple:

    Quand ça marche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ui->spTauxHoraire->value()   : 4.01 
    ui->spTauxHoraire->value()*100.00   : 401 
    (quint64)(ui->spTauxHoraire->value()*100.00)    :401 
    t.tauxHoraire   : 401
    Quand ça ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ui->spTauxHoraire->value()   : 2.01 
    ui->spTauxHoraire->value()*100.00   : 201 
    (quint64)(ui->spTauxHoraire->value()*100.00)  : 200 
    t.tauxHoraire   : 200

    j'ai essayé en enlevant le quint64 , en le remplaçant par un quint32 mais rien n'y fait et j'avouerais que je sèche un peu.

    Avez vous une explication , ou des idées pour corriger ce problème s'il vous plait?

    merci d'avance.

  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.

    Le QSpinBox travaille avec des nombres entiers, donc comment peux-tu obtenir des nombres décimaux avec value() ?

    Il serait peut-être plus judicieux d'utiliser un QDoubleSpinBox en fixant le nombre de décimales à 2, ou bien de faire sa propre classe spinbox.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Par défaut
    Désolée , j'ai été imprécise: j'utilise bien des doublespinbox en fait ...
    le problème est en fait résolu (chat du forum)

    la conversion en quint64 amener à une perte d'information.
    pour pallier au problème : on m'a conseillé d'arrondir mon calcul avant la conversion. et ça marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    quint64 tarifI = (quint64)round(ui->spTarif->value()*100.00);

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

Discussions similaires

  1. gestion trimestre dans états issus requête analyse croisée
    Par slave1802 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 08/07/2015, 21h21
  2. QSpinBox ou QDateEdit : gestion des valeurs NULL
    Par Dr FMeuuh dans le forum Qt
    Réponses: 6
    Dernier message: 07/04/2014, 11h11
  3. Réponses: 3
    Dernier message: 12/08/2007, 16h49
  4. [Lex & Yacc] Gestion des ensembles d'entiers
    Par innosang dans le forum Générateurs de compilateur
    Réponses: 7
    Dernier message: 28/11/2005, 19h26
  5. gestion d'un joystick ...
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 23/05/2002, 12h53

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