fredrizk
Messages postés12Date d'inscriptionmercredi 6 juillet 2011StatutMembreDernière intervention 1 août 2011
-
7 juil. 2011 à 14:48
BunoCS
Messages postés15472Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention25 mars 2024
-
7 juil. 2011 à 17:27
Bonjour
J'ai écrit une fonction qui parcours un fichier.csv, retrouve les 2 valeurs que je lui donner et renvoi 2 valeurs correspondantes. Ensuite je fais une différence des 2 valeurs. Sauf que je reçois à la place une valeure éronée.
Si quelqu'un pourrais me dire ou est mon erreur ca serait simpa
Merci
double Window::calculs()
{
DV=0;
QFile file("C:/Utilisateurs/Rizkallah/Bureau/desmune/Logiciel/valeurs.csv");
if (!file.open(QFile::ReadOnly))
{
// QMessageBox::information(this, " Erreur ", "Fichier .csv non trouvé, verifier code logiciel");
return 0;
}
QTextStream stream(&file);
while(!stream.atEnd())
{
// On récupère ligne par ligne le fichier
QString ligne = stream.readLine();
QStringList liste = ligne.split(";");
valeur1 = liste.at(0).toDouble();
valeur2 = liste.at(1).toDouble();
if(valeur1 valcote && valeur3 valcote1)
mavaleur=valeur2 ;
mavaleur2=valeur4 ;
break;
}
DV=mavaleur2-mavaleur ;
return DV;
return mavaleur;
return mavaleur2;
}
BunoCS
Messages postés15472Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention25 mars 2024103 7 juil. 2011 à 17:27
Hello,
return DV;
return mavaleur;
return mavaleur2;
Comme je te l'ai déjà dit, ce code est foireux: tes 2 derniers returns ne seront jamais exécutés.
De plus, il ne faut pas tester l'égalité entre 2 double mais voir si leur différence est proche de zéro: ceci à cause de problème d'arrondi, précision machine,...
Donc, plutôt faire ceci:
if (abs(valeur1 - valcote) < 1e-6)
{...}
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...