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 :

[FloatToStr] Conversion d'un nombre en AnsiString [FAQ]


Sujet :

C++Builder

  1. #1
    Membre éprouvé
    Avatar de bebeours
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 103
    Par défaut [FloatToStr] Conversion d'un nombre en AnsiString
    Bonjour,

    Je cherche à convertir un nombre, un double précisément, en une AnsiString à l'aide de la fonction FloatToStr. J'utilise la ligne de commande suivante pour avoir le "." comme séparateur décimal (au lieu de la virgule).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DecimalSeparator = '.';
    Hélas cela ne fonctionne pas et j'obtiens toujours une "," comme séparateur décimal dans mon résultat. Est-ce normal ou bien est-ce un dysfonctionnement de la fonction ?

    Merci.

  2. #2
    mat.M
    Invité(e)
    Par défaut
    Euuhh à tout hasard , je dirais que cela vient des paramêtres régionaux , que c'est prévu pour ....
    Parce que sur un système français évidemment le séparateur décimal est la virgule et non le point à l'inverse des anglo-saxons ( mais la tu le sais )
    Donc moralité , à moins que quelq'un propose une autre solution , il faut tout se taper par soit même avec 2 AnsiString et faire une concaténation .
    En ayant au préalable isolé partie entière et partie décimale ...

  3. #3
    mat.M
    Invité(e)
    Par défaut
    Juste une petite remarque : même problème chez moi , avec C++ Builder ( 3)

    J'ai essayé cela , Edit1 est une TEdit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    float a=100.05;
    float b=3.58;
    float c=a+b;
    AnsiString str;
    str=FloatToStr(c);
    Edit1->Text=str;
    }
    Résultat : 103,630004882813 AVEC la virgule

    Si tu trouves une solution particulière , je suis preneur

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2002
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 26
    Par défaut
    c'est normale que tu ai la virgule si tu est avec des paramêtres régionaux en français !
    mais tu peu changer ces paramètres :

    pour mettre le point comme symbole décimale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SDECIMAL, ".");
    pour remettre la virgule ( si tu le souhaite ) comme symbole décimale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SDECIMAL, ",");
    tu peut par exemple faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void __fastcall TForm1::Button1Click(TObject *Sender) 
    { 
    SetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SDECIMAL, ".");
    float a=100.05; 
    float b=3.58; 
    float c=a+b; 
    AnsiString str; 
    str=FloatToStr(c); 
    Edit1->Text=str;
    SetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SDECIMAL, ","); 
    }
    normalement le texte de t'on TEdit sera : 103.630004882813
    voila voila !!

  5. #5
    mat.M
    Invité(e)
    Par défaut
    Merci cap38 pour les infos.

Discussions similaires

  1. conversion d'un nombre en chaîne de caractères
    Par magui_2700 dans le forum Langage
    Réponses: 1
    Dernier message: 18/01/2008, 11h15
  2. conversion date vers nombre
    Par hector dans le forum Framework .NET
    Réponses: 1
    Dernier message: 18/01/2007, 11h47
  3. conversion d'un nombre en binaire
    Par Andrey dans le forum C
    Réponses: 17
    Dernier message: 07/11/2006, 00h02
  4. [Conversion chaine en nombre]
    Par tesla dans le forum Oracle
    Réponses: 2
    Dernier message: 06/11/2006, 17h28
  5. Réponses: 4
    Dernier message: 19/06/2006, 19h15

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