Autor Tema: Float to String en C18 compiler  (Leído 4286 veces)

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

Desconectado Palomino86

  • PIC16
  • ***
  • Mensajes: 180
Float to String en C18 compiler
« en: 28 de Octubre de 2010, 19:38:46 »
Hola que tal foro;

Estaba viendo que C18 no cuenta entre sus  librerías que trae por default una que realice la conversión de flotantes a string; pero en el congreso de virtual de hoy se menciono que existe una función que se llama "ftoa" la cual realiza tal conversión pero que se tenia que descargar de la pagina de Microchip. La he estado buscando en la pagina y no la escuentro... De pura casualidad nadie de por aqui la tiene o podria decirme exactamente en que seccion de la pagina de microchip viene....

Saludos
Lo que no me destruye, me fortalece

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Float to String en C18 compiler
« Respuesta #1 en: 28 de Octubre de 2010, 19:50:46 »
Hola que tal foro;

Estaba viendo que C18 no cuenta entre sus  librerías que trae por default una que realice la conversión de flotantes a string; pero en el congreso de virtual de hoy se menciono que existe una función que se llama "ftoa" la cual realiza tal conversión pero que se tenia que descargar de la pagina de Microchip. La he estado buscando en la pagina y no la escuentro... De pura casualidad nadie de por aqui la tiene o podria decirme exactamente en que seccion de la pagina de microchip viene....

Saludos

Hola, parece ser ésta:

Código: [Seleccionar]
void ftoa(unsigned char *buf, float f) {
        unsigned int rem;
        unsigned char *s,length=0;
        int i;
 
        i = (int)((float)f*10);
 
        s = buf;
        if (i == 0){            //print 0.0 with null termination here
                *s++ = '0';
                *s++ = '.';
                *s++ = '0';
                *s=0;                   //null terminate the string
        } else {       
                if (i < 0) {
                        *buf++ = '-';
                        s = buf;
                        i = -i;
                }
                //while-loop to "decode" the long integer to ASCII by append '0', string in reverse manner
                //If it is an integer of 124 -> string = {'4', '2', '1'}
                while (i) {
                        ++length;
                        rem = i % 10;
                        *s++ = rem + '0';
                        i /= 10;
                }
                //reverse the string in this for-loop, string became {'1', '2', '4'} after this for-loop
                for(rem=0; ((unsigned char)rem)<length/2; rem++) {
                        *(buf+length) = *(buf+((unsigned char)rem));
                        *(buf+((unsigned char)rem)) = *(buf+(length-((unsigned char)rem)-1));
                        *(buf+(length-((unsigned char)rem)-1)) = *(buf+length);
                }
 
                /* Take care of the special case of 0.x if length ==1*/
                if(length==1) {
                        *(buf+2) = *buf;
                        *buf = '0';
                        *(buf+1) = '.';
                        *(s+2)=0;                       //null terminate
                } else {
                        *(buf+length) = *(buf+length-1);
                        *(buf+length-1)='.';
                        *(s+1)=0;                       //null terminate
                }
        }
 }

http://www.microchip.com/forums/m499118-print.aspx

Desconectado Palomino86

  • PIC16
  • ***
  • Mensajes: 180
Re: Float to String en C18 compiler
« Respuesta #2 en: 01 de Noviembre de 2010, 12:57:42 »
Les dejo la función que convierte float a strings para quien ocupe de esta la descargue de aquí. Tal función me la proporciono Andrés Raúl Burno Saravia

Saludos :-/
Lo que no me destruye, me fortalece

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: Float to String en C18 compiler
« Respuesta #3 en: 03 de Noviembre de 2010, 00:59:53 »
Estas funciones no se basa en el formato IEEE 754 que define a un numero float, si utilizaria le costaria menos codigo y una convercion mas rapida.
« Última modificación: 03 de Noviembre de 2010, 01:02:26 por cristian_elect »

Desconectado Palomino86

  • PIC16
  • ***
  • Mensajes: 180
Re: Float to String en C18 compiler
« Respuesta #4 en: 25 de Noviembre de 2010, 14:29:25 »
Ejemplito de la funcion
Lo que no me destruye, me fortalece

Desconectado Palomino86

  • PIC16
  • ***
  • Mensajes: 180
Re: Float to String en C18 compiler
« Respuesta #5 en: 25 de Noviembre de 2010, 15:11:02 »
Que tal cristian_elect

Oye pues si tienes alguna funcion que tenga el formato IEEE 754 que convierta flotantes a strings te agradeceria si pudieras pasarla y asi beneficiarnos todos :)

Saludos
Lo que no me destruye, me fortalece

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: Float to String en C18 compiler
« Respuesta #6 en: 28 de Noviembre de 2010, 02:58:03 »
De la red me consegui esta info.
Hay esta la teoria de los numeros flotantes como lo escriben.
De hay ise un programa para mi atmega por que usar C a full formato consume mucha flash.


 

anything