Conversion type float to char

Messages postés
22
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2005
- - Dernière réponse : magic_Nono
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
- 3 nov. 2004 à 11:17
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
Afficher la suite 

7 réponses

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
0
Merci
Salut,
Tu peux utiliser sprintf avec %f
Commenter la réponse de cs_aardman
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
0
Merci
float f = 5.2456f;
char c;

c = char(f);

et c vaut 5
Commenter la réponse de Galmiza
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
2
0
Merci
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
Commenter la réponse de cs_JCDjcd
Messages postés
22
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2005
0
Merci
oki merci

j'ai utilise
char tab[20] = sprintf("%2.0f", mon_float);
Commenter la réponse de ricool
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
0
Merci
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-)
Commenter la réponse de magic_Nono
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
2
0
Merci
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
Commenter la réponse de cs_JCDjcd
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
0
Merci
ui...

effectivt,

le cast en char tronque la partie décimale

Magic Nono: l'informagicien! 8-)
Commenter la réponse de magic_Nono