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

C++Builder Discussion :

Virgule flottante et fonction [BCB6]


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut Virgule flottante et fonction [BCB6]
    Bonjour tout le monde,
    Voila une nouvelle demande d’aide… Y arriverais je un jour


    Actuellement je planche sur une fonction qui a pour but d’afficher dans une formule composé de 3 TLabels des valeurs en virgule flottante.

    Mes valeurs comporte des virgules donc ‘float’ en déclaration s’avère normal.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    float FormuleValULed, FormuleValILed;
     
     
    //Fixe les valeurs de U(led) et de I(led).
    FormuleValULed = "2,7";
    FormuleValILed = "0,01";
    AffichageAbaqueResistanceLed("R =", FormuleValULed,FormuleValILed);
     
    //Fonction qui gère l'affichage de la formule de calcul des résistances à utiliser avec les leds.
    void __fastcall TFiche1::AffichageAbaqueResistanceLed(AnsiString ValR, float ValULed, float ValILed)
    {
       LabelR->Caption = ValR;
       LabelU->Font->Style = TFontStyles() << fsUnderline;
       LabelU->Caption = "U - "+ ValULed;
       LabelI->Caption = ValILed;
    }

    Mais voila cela me provoque des erreurs et donc pas de compilation.


    [C++ Erreur] PanelElec.cpp(61): E2060 Utilisation incorrecte de la virgule flottante
    [C++ Erreur] PanelElec.cpp(319): E2060 Utilisation incorrecte de la virgule flottante
    [C++ Erreur] PanelElec.cpp(320): E2060 Utilisation incorrecte de la virgule flottante
    A priorie à la compilation il ne me considère pas mes valeurs comme nombre à virgule flotante... Quelqu’un aurais t il une solution

    Cordialement.

    <<Editer, j'ai rectifier une partie des bugs...
    1 j'ai remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FormuleValULed = "2,7";
    FormuleValILed = "0,01";
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FormuleValULed = 2.7;
    FormuleValILed = 0.01;
    Du coup je n'ai plus que:
    [C++ Erreur] PanelElec.cpp(61): E2060 Utilisation incorrecte de la virgule flottante
    Si quelqu'un voie ce qui cloche je reste preneur.

    2 -> je me suis rendu compte aussi que 0.01 se transformais en 0,00998877... Pourquoi ?

    Merci beaucoup pour vos informations
    Cordialement.>>

  2. #2
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut Draner:
    Est tu sur que le separateur decimal est le point et pas la virgule.

  3. #3
    Membre chevronné
    Avatar de Altau
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    296
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 296
    Par défaut
    Ca aurait été bien que tu nous dises en quoi consiste la ligne 61.
    On va supposer qu'il s'agit de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LabelU->Caption = "U - "+ ValULed;
    Dans ce cas, l'addition d'un AnsiString et d'un float me parait osée. Il doit exister une méthode du genre FloatToStr pour résoudre ça.

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    void __fastcall TFiche1::AffichageAbaqueResistanceLed(AnsiString ValR, float ValULed, float ValILed)
    {
    LabelR->Caption = ValR;
    LabelU->Font->Style = TFontStyles() << fsUnderline;
    LabelU->Caption = "U - "+ ValULed;
    LabelI->Caption = ValILed;
    }
    En arrière plan, la propriété Caption du type AnsiString sait s'adapter à des types différents.
    Néanmoins, c'est une chaîne et par conséquent, tout ce qui doit être concaténé doit l'être avec des chaînes.
    C'est le même problème rencontré avec c_str() dans une autre discussion.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    LabelU->Caption = "U - "+ FloatToStr(ValULed);
    // j'aime bien le faire systématiquement
    LabelI->Caption = FloatToStr(ValILed);
    Le type float manque de précision (immédiatement visible) donc il faut utiliser le type double.

    A plus !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut
    Bon celà ne m'avance pas plus...
    Si je tappe cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       //Fixe les valeurs de U(led) et de I(led).
       FormuleValULed = 2,7;
       FormuleValILed = 0,01;
       AffichageAbaqueResistanceLed("R =", FormuleValULed,FormuleValILed);
    Ca me donne 0 à l'affichage au lieu de 0,01...
    Si je met un "." ca me donne 0.00998877...

    Et dans tous les cas de figure à la compilation, lorsque je décommente cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LabelU->Caption = "U - "+ ValULed;
    Ca me retourne le code d'erreur suivant:
    [C++ Erreur] PanelElec.cpp(61): E2060 Utilisation incorrecte de la virgule flottante
    Et la je ne voie pas trop d'ou celà peut venir

    Merci pour vos indications
    Cordialement.

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Il me semble l'avoir montré !
    Utilise des double et non des float !

    A plus !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut
    Cette fois cela m'affiche bien 0,01

    Par contre j'ai toujours mon problème ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //Fonction qui gère l'affichage de la formule de calcul des résistances à utiliser avec les leds.
    void __fastcall TFiche1::AffichageAbaqueResistanceLed(AnsiString ValR, double ValULed, double ValILed)
    {
       LabelR->Caption = ValR;
       LabelU->Font->Style = TFontStyles() << fsUnderline;
       LabelU->Caption = "U - "+ ValULed;
       LabelI->Caption = ValILed;
    }
    Et la je ne voie pas ce qui peut cloché
    Merci beaucoup pour vos indications
    Cordialement.

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    LabelU->Caption = "U - "+ FloatToStr(ValULed);

    A plus !

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut
    Ok
    Ca marche impec
    Merci beaucoup

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

Discussions similaires

  1. Paramètre virgule flottante fonction template
    Par Cbenlfun dans le forum Langage
    Réponses: 3
    Dernier message: 10/02/2009, 09h56
  2. [D7] Problème de virgule flottante
    Par Magnus dans le forum Langage
    Réponses: 17
    Dernier message: 22/09/2005, 14h56
  3. Réponses: 6
    Dernier message: 16/05/2004, 19h03
  4. [langage] Arithmétique en virgule flottante
    Par marouanitos dans le forum Langage
    Réponses: 3
    Dernier message: 19/09/2003, 14h48
  5. [Kylix] Kylix3: Pb de virgule flottante
    Par hubble dans le forum EDI
    Réponses: 1
    Dernier message: 22/06/2003, 16h36

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