conversion de float en chaîne

E

erodeboy

Guest
Je veux convertir une valeur en virgule flottante en une chaîne à l'aide C.j'utilise aider Keil moi avec le code.

Merci d'avance

 
J'aurais besoin de séparer la mantisse de la fraction et de convertir tous les chiffres à une mise au point ASCII "."Symbole en cas de besoin

 
La fonction atof convertit en une chaîne de points de valeur à virgule flottante.simillarly je veux une fonction pour convertir un float en une chaîne pour que je puisse l'envoyer à l'écran LCD.

 
Comme dit Artem, regardez sprintf ();Code:Char buffer [24];

float x = 1,5;sprintf (buffer, "Float à chaîne% f", x);

 
"Sprintf" consomme beaucoup d'espace mémoire est là Tout autre moyen de sortir ....

 
Cette routine imprime en virgule flottante en 1 w décimale / o en utilisant printf / sprintf.

Code:

/ *

************************************************** ************************************************** *****

* Convertir un nombre à virgule flottante chaîne avec PLACE 1 décimale

*

* Description: Cette fonction convertit une virgule flottante à une chaîne terminée par null

* Avec 1 décimale.

*

* Exemples:

*

* Float f = 9,567;

* Ftoa (& s [0], f); / / s []={' 9','.',' 5 ', 0)

* Float f = -0,189;

* Ftoa (& s [0], f); / / s []={'-', '0 ','. ', '1', 0)

* Arguments: «unsigned char * buf est le pointeur vers la chaîne contenant le résultat de la conversion

* 'Float f' est l 'entrée en virgule flottante

* Retourne: Retourne la chaîne avec buf * unsigned char pointe.

* Notes: Cette routine modification de itoa10 () dans .. \ \ échantillon de dossier misc HT-picc

* Si plusieurs décimales nécessaire, modifier la dernière section de ce code

* Gamme de F (-3,276.7, 3,276.7)

* Cette fonction ne résultat de l'impression, comme 0,0.

************************************************** ************************************************** *****

* /

ftoa vide (unsigned char *, float f) (

rem unsigned int;

unsigned char * s, longueur = 0;

int i;i = (int) ((float) f * 10);s = buf;

if (i == 0) (/ / affiche 0,0 avec terminaison null ici

* S = '0 ';

* S = '.';

* S = '0 ';

* S = 0; / / null mettre fin à la chaîne

) Else (

if (i <0) (

* Buf = '-';

s = buf;

i =-i;

)

/ / Boucle while à «décoder» l'entier long à ASCII en ajouter '0 ', chaîne de la façon inverse

/ / Si c'est un entier de 124 -> string = ('4 ', '2', '1 ')

while (i) (

Longueur;

rem =% i 10;

* S rem = '0 ';

i / = 10;

)

/ / Inverser la chaîne dans cette boucle for, string est devenu ('1 ', '2', '4 ') après cette boucle for-

pour (rem = 0; ((unsigned char) rem) <longueur / 2; rem ) (

* (Buf longueur) = * (buf ((unsigned char) rem));

* (Buf ((unsigned char) rem)) = * (buf (longueur-((unsigned char) rem) -1));

* (Buf (longueur-((unsigned char) rem) -1)) = * (buf longueur);

)/ * Prenez soin de le cas particulier des 0.x si la longueur == 1 * /

if (longueur == 1) (

* (Buf 2) = * buf;

* Buf = '0 ';

* (Buf 1) = '.';

* (S 2) = 0; / / null fin

) Else (

* (Buf longueur) = * (longueur buf-1);

* (Buf length-1 )='.';

* (S 1) = 0; / / null fin

)

)

)
 

Welcome to EDABoard.com

Sponsor

Back
Top