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

 Delphi Discussion :

Résultat étrange pour une opération de StrToFloat


Sujet :

Delphi

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut Résultat étrange pour une opération de StrToFloat
    Bonjour

    Je fais le calcul suivant que j 'ai volontairement décomposé pour trouver d'où venait le probleme sans pour autant y parvenir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dtemp1 := strtofloat(d3);
            dtemp2 := strtofloat(List[I]);
            dtemp := dtemp1 - dtemp2;
    J ai d3=2, list[i]=1.1

    J attends donc tout a fait legitimement un dtemp=0.9 mais mon resultat est 17.9
    Par contre, si je saisis en dur mes valeurs strtofloat('2') et strtofloat('1.1') j'ai bien le resultats attendu !

    Pouvez-vous m'aider parceque là je seche.
    Merci

    Stéphane

  2. #2
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour,
    tu es sûr que i est bien initialisé ?

    As tu affiché d3 et List[i] dans un messagebox ?

    A+
    Charly

    PS : tu as le point comme séparateur décimal ?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    Merci de prendre le temps sur mon probleme...

    Oui tout est initialisé correctement et le separateur decimal est bien le point.
    Jutilise le code suivent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    diff_rmp :=strtofloat(d3) - strtofloat(List[I]);
            dtemp := 0;
          //  dtemp1 := strtofloat(d3);
           // dtemp2 := strtofloat(List[I]);
            dtemp1 := strtofloat('2');
            dtemp2 := strtofloat('1.1');
            dtemp := dtemp1 - dtemp2;
     
          Memo1.Lines.Add(List[I] +'*****' + d1 + '*****' + floattostr(diff_rmp) +'*****' + floattostr(dtemp));
    le resultat est
    1.1 ***** 2 ***** 17.9 ***** 0.9
    merci de ton aide

  4. #4
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Points : 104
    Points
    104
    Par défaut
    Pour vérifier , je ferais d'abord...
    Memo1.Lines.Add(**1*** d3 = ' + d3 + ' ***** ' + 'List[' + intostr(i) +'] = ' + List[I]);
    dtemp1 := strtofloat(d3);
    dtemp2 := strtofloat(List[I]);
    Memo1.Lines.Add(**2*** dtemp1 = ' + floattostr(dtemp1) + ' ***** dtemp2 = ' + floattostr(dtemp2));
    dtemp := dtemp1 - dtemp2;
    Memo1.Lines.Add(**3*** dtemp = ' + floattostr(dtemp));

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    Merci tu m as fait pendre conscience de mon erreur...
    Donc tout est calculé nickel des lors ou je mets la bonne variable...

  6. #6
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par sp2308 Voir le message
    Merci tu m as fait pendre conscience de mon erreur...
    Donc tout est calculé nickel des lors ou je mets la bonne variable...
    Il m'est déjà arrivé de commettre l'erreur d'indice suivant... avec -1 attribué à un TList pour ne plus avoir d'item apparent et puis de faire pour vérifier...
    i := -1;
    Liste.ItemIndex := i;
    Memo1.Lines.Add( 'List[' + intostr(i) +'] = ' + Titre.Items[i]);

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/04/2015, 14h31
  2. operator>> pour une QMap avec qt dbus
    Par bourriquet_42 dans le forum Qt
    Réponses: 1
    Dernier message: 18/02/2009, 17h49
  3. [RegEx] regex pour verifier une operation mathematique
    Par flov91 dans le forum Langage
    Réponses: 2
    Dernier message: 11/02/2009, 14h03
  4. Réponses: 8
    Dernier message: 10/10/2007, 13h12
  5. renvoi de plusieurs resultat pour une recherche
    Par frmathieu dans le forum Excel
    Réponses: 1
    Dernier message: 13/08/2007, 16h44

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