Autor Tema: Es posible convertir una float a un string  (Leído 17416 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Es posible convertir una float a un string
« 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);
}
                    //

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Es posible convertir una float a un string
« Respuesta #1 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
« Última modificación: 28 de Septiembre de 2009, 18:01:08 por MLO__ »
El papel lo aguanta todo

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Es posible convertir una float a un string
« Respuesta #2 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!
No contesto mensajes privados, las consultas en el foro

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: Es posible convertir una float a un string
« Respuesta #3 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.
@fabianjsm is on twitter

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Es posible convertir una float a un string
« Respuesta #4 en: 28 de Septiembre de 2009, 17:59:39 »
 :-/  gracias..

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Es posible convertir una float a un string
« Respuesta #5 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.
.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Es posible convertir una float a un string
« Respuesta #6 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!

No contesto mensajes privados, las consultas en el foro

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Es posible convertir una float a un string
« Respuesta #7 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
.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Es posible convertir una float a un string
« Respuesta #8 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!
No contesto mensajes privados, las consultas en el foro