arrondis faux avec QString::number
Bonjour à tous,
Je suis sur un problème en ce moment que je n'arrive pas à identifier, je vous l'expose.
Je cherche à faire des arrondis monétaires sur des QLineEdit.
J'ai donc créé un slot qui arrondis les valeurs des que l'utilisateur les a entré.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| MaClass::MaClass()
{
this->resize(740, 560);
initWidget();
initWidgetArchive();
connect(somme_1, SIGNAL(editingFinished()), this, SLOT(initValues()));
connect(somme_2, SIGNAL(editingFinished()), this, SLOT(initValues()));
connect(somme_3, SIGNAL(editingFinished()), this, SLOT(initValues()));
connect(somme_4, SIGNAL(editingFinished()), this, SLOT(initValues()));
}
void MaClass::initValues()
{
QString s;
totalMois_1->setText(s.setNum(somme_1->text().toDouble()
+ somme_2->text().toDouble()
+ somme_3->text().toDouble()
+ somme_4->text().toDouble()));
arrondir();
}
void MaClass::arrondir()
{
somme_1->setText(QString::number(somme_1->text().toDouble(), 'f', 2));
somme_2->setText(QString::number(somme_2->text().toDouble(), 'f', 2));
somme_3->setText(QString::number(somme_3->text().toDouble(), 'f', 2));
somme_4->setText(QString::number(somme_4->text().toDouble(), 'f', 2));
totalMois_1->setText(QString::number(totalMois_1->text().toDouble(), 'f', 2));
} |
Résultat, ça se passe plutôt bien lorsque totalMois_1 (qui affiche le résultat) ne dépasse pas les 9999,99 euros, sinon l'arrondis est faussé, au lieu d'arrondir à la deuxième décimale, il arrondit à la première.
(par exemple, si somme_1 = 10000,07
totalMois_1 prendra la valeur 10000,10.
Et ce qui m'étonne c'est que somme_1 lui reste à sa valeur de 10000,07 alors qu'il subit le même arrondis que totalMois_1).
Voila, il doit surement y avoir un truc tout bête derrière tout ça, mais je vois pas :(
Merci d'avance pour votre aide.
En espérant avoir fait une description claire.