TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Medusa en 28 de Septiembre de 2009, 14:03:59

Título: Es posible convertir una float a un string
Publicado por: Medusa en 28 de Septiembre de 2009, 14:03:59
hola, Tengo una variable float producto de la lectura del ADC0,  quisiera convertir esta variable a un string, he intentado usar itoa pero no obtengo el valor correcto, alguien me prodria decir como hacerlo o cual es mi error??

Citar
#include <stdlib.h>

int j;
char Texto[6];
.
.
void main() {

   int32 Buffer_ADC0;
   float Valor_ADC0;
.
.
   set_adc_channel(0);
   delay_us(4);
   Buffer_ADC0 = read_adc();
   delay_us(10);
   Valor_ADC0 =  (float)Buffer_ADC0 *(0.0529);
   //printf("%4.2f \r\n", Valor_ADC0);

   itoa(Valor_ADC0,10, Texto);
}
                    //
Título: Re: Es posible convertir una float a un string
Publicado por: MLO__ en 28 de Septiembre de 2009, 14:10:55
Hola.

Usa la funcion sprintf();

Código: C#
  1. char mystring[20];
  2. float myfloat;
  3.  
  4. myfloat=1.234;
  5.  
  6. sprintf(mystring,"%f",myfloat);

itoa() es para enteros y por eso no te va a funcionar

Saludos
Título: Re: Es posible convertir una float a un string
Publicado por: Suky en 28 de Septiembre de 2009, 14:12:29
Para convertir usa sprintf, por ejemplo:

Código: C
  1. char String[7];
  2. float T=1.2345;
  3.  
  4. sprintf(String,"%1.4f",T);

Creo que este tema ya esta charlado en el foro  :?

Saludos!
Título: Re: Es posible convertir una float a un string
Publicado por: fabianjsm en 28 de Septiembre de 2009, 14:18:04
que compilador estas utilizando? en c18 por ejemplo, el printf de la libreria no soporta %f.
Título: Re: Es posible convertir una float a un string
Publicado por: Medusa en 28 de Septiembre de 2009, 17:59:39
 :-/  gracias..
Título: Re: Es posible convertir una float a un string
Publicado por: Cryn en 02 de Junio de 2010, 17:05:16
En C18 como se puede usar también el sprintf? necesita que se incluya alguna librería?

quiero convertir un float a string también, para visualizarlo en un lcd

saludos.
Título: Re: Es posible convertir una float a un string
Publicado por: Suky en 03 de Junio de 2010, 12:34:42
En C18 como se puede usar también el sprintf? necesita que se incluya alguna librería?

quiero convertir un float a string también, para visualizarlo en un lcd

saludos.

Si se puede, hay que incluir stdio.h, pero no acepta flotantes. Con:


Código: C
  1. #define NDecimas 1000   // Para 3 decimas.-
  2. int Entero;
  3. unsigned int Decimal;
  4. float Valor;
  5.  
  6. Entero=Valor;
  7. Decimal=(Valor*NDecimas)%NDecimas;
  8.  
  9. sprintf("%u,%03u",Entero,Decimal);

Formas el decimal.

Tambien puedes usar directamente printf con el LCD, en donde colgué la libreria lcd_flex_c18 se explica como.


Saludos!

Título: Re: Es posible convertir una float a un string
Publicado por: Cryn en 03 de Junio de 2010, 15:02:33
uuucha que mal este C18, me parece que el compilador debería incluir los float en esa función que es muy importante.

Muchas gracias por el código suky, lo probé y funciona muy bien, solo que hay que aumentar:

Decimal=(int)(vol1*NDecimas)%NDecimas; //vol1 es mi valor float

porque sino sale error, dice el compilador que debe ser entre ints y en el sprintf faltaba colocar la cadena destino donde se creará la nueva:

sprintf(String,"%u.%02uV",Entero,Decimal);

Este C18 que se quiere parecer más al assembler que a un C :(

Ojalá que en versiones superiores en C18 incluyan a los float en el sprintf y printf.

Una consulta más como puedo saber como maneja los float el C18, es decir como se forma el número float a partir de cada uno de sus 4 bytes.

saludos
Título: Re: Es posible convertir una float a un string
Publicado por: Suky en 03 de Junio de 2010, 16:53:00
Una consulta más como puedo saber como maneja los float el C18, es decir como se forma el número float a partir de cada uno de sus 4 bytes.

saludos

Eso me parecio verlo en User Guide de C18, pero no recuerdo bien donde  :?


Saludos!