Conversion type float to char

Signaler
Messages postés
22
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2005
-
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
-
Salut a tous

voila j'ai un probleme de conversion de type
j'ai un prog avec client - serveur, le client envoi des chiffre au serveur, celui ci calcul une somme et l'envoie au client

le probleme c'est que la fonction d'ecriture prend un char et non un float.

Si quelqu'un c'est comment faire pour convertir un float en char fait moi signe

'ci d'avance

7 réponses

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,
Tu peux utiliser sprintf avec %f
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008

float f = 5.2456f;
char c;

c = char(f);

et c vaut 5
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
3
heu ... non, je ne pense pas que char(c) compile car c'est un mon cle du langage C/C++, donc (char)f est un caste, et ca ne retourne certainement pas 5, la vrai solution est celle de aardman :

char buf[256];
float f=3.1415926535;
sprintf(buf,"%f",f); // sprintf(buf,"%e",f); pour l'ecriture en exposant
Messages postés
22
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2005

oki merci

j'ai utilise
char tab[20] = sprintf("%2.0f", mon_float);
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
le char doit bien etre casté et non convertit en ascii (ce qui est le cas avec les sprintf)
int titi;
...
char toto=(char)titi;

attention, contrôle bien les limites...
plus petite avec les char (cf limits.h)

++

Magic Nono: l'informagicien! 8-)
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
3
il existe un caste "coherent" entre le int et le char (d'ailleur le sprintf convertit tout le char en int), mais un caste entre un float et un char est totalement incoherent. Il suffit de regarder comment est formate un float en memoire, et se rendre compte que (char)(5.) ne fait pas 5 en ascii
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
ui...

effectivt,

le cast en char tronque la partie décimale

Magic Nono: l'informagicien! 8-)