? transformer un float en chaine... [Résolu]

Signaler
Messages postés
24
Date d'inscription
vendredi 3 mars 2006
Statut
Membre
Dernière intervention
24 mars 2008
-
Messages postés
24
Date d'inscription
vendredi 3 mars 2006
Statut
Membre
Dernière intervention
24 mars 2008
-
Salut à tous;
voilà je suis en train de faire un tout petit prog/ en C sous win32, il s'agit d'une division d'un entier par un autre,
le résultat pourrait-être un float, or pour afficher ce résultat
dans un "control texte", je suis obligé de le transformer en
chaine en appliquant itoa() <si le résultat de la division était un entier> or dans mon cas j'ai un float, Comment faire?
Merci.

8 réponses

Messages postés
24
Date d'inscription
vendredi 3 mars 2006
Statut
Membre
Dernière intervention
24 mars 2008

Merci BruNews, cette fois-ci ma petite application
tourne creectement.
@+
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
Faut d'abord passer en float tes nbr si tu veux du float en sortie.

int a, b;
float f;
f = (float) a / (float) b;

sprintf() est le plus simple pour mettre en chaine.

ciao...
BruNews, MVP VC++
Messages postés
24
Date d'inscription
vendredi 3 mars 2006
Statut
Membre
Dernière intervention
24 mars 2008

GetWindowText(hEdit, szBuf, sizeof(szBuf));
nResult= atof(szBuf);

GetWindowText(hEdit2, szBuf, sizeof(szBuf));
nResult2 = atof(szBuf);

valeur_finale = division(nResult,nResult2);
fin_string += sprintf(szBufFinal, "%f", valeur_finale);
szBufFinal[fin_string] = '\0';
SetWindowText(hResult, _i64toa(szBufFinal, "%f", valeur_finale, szBufFinal, 10));
SetFocus(hEdit);
Messages postés
24
Date d'inscription
vendredi 3 mars 2006
Statut
Membre
Dernière intervention
24 mars 2008

GetWindowText(hEdit, szBuf, sizeof(szBuf));
nResult= atof(szBuf);
Bon voilà ce qui se passe:

//je saisis un nombre dans un premier "text edit"
GetWindowText(hEdit, szBuf, sizeof(szBuf));

//je le transforme en float
nResult = atof(szBuf);

//je saisis un 2eme nombre dans un 2eme "text edit"
GetWindowText(hEdit2, szBuf, sizeof(szBuf));

//je le transforme aussi en float
nResult2=atofszBuf);
//je fais ma division qui va me donner un float
valeur_finale = division(nResult,nResult2);

//maintenant comment afficher le résultat
//dans un 3eme 'text edit"?
//sachant qu'il faut transformer cette valeur en "alphanumeriqie": char
SetWindowText(hResult, (valeur_finale, szBufFinal, 10));

Merci de ton aide
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
sprintf(szBufFinal, "%f", valeur_finale);
SetWindowText(hResult, szBufFinal);

où est le prob ???

ciao...
BruNews, MVP VC++
Messages postés
24
Date d'inscription
vendredi 3 mars 2006
Statut
Membre
Dernière intervention
24 mars 2008

ENCORE MERCI CA MARCHE A MERVEILLE!

NB:je rappelle que je débute en win32,
alors je sollicite toute votre
indulgence.
Messages postés
24
Date d'inscription
vendredi 3 mars 2006
Statut
Membre
Dernière intervention
24 mars 2008

Re;
voilà mon petit programme qui fait les quatre opérations
élémentaire (+-*/) fonctionne, mais je n'arrive pas à
taper les réels dans ma case de saisie "NB:ce n'est pas un pb de clavier"
je rappelle que j'utilise un "control edit text" élémentaire
de type:

static HWND hEdit;
hEdit = CreateWindow("EDIT", "",
WS_CHILD|WS_VISIBLE|ES_CENTER|ES_NUMBER|WS_BORDER,
10, 10, 120, 20, hWnd, (HMENU)-1, hInstance, 0);
alors comment faire pour que cette case accepte les réels?
Merci
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
Enlève le style ES_NUMBER et tu devras (par sous classement du EDIT) controler toi même ce qui se passe dedans.

Exemple ici:
http://www.cppfrance.com/code.aspx?ID=35788

ciao...
BruNews, MVP VC++