TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Rulo en 18 de Septiembre de 2007, 16:53:28

Título: De INT a FLOAT
Publicado por: Rulo en 18 de Septiembre de 2007, 16:53:28
 

            Hola!!


       tengo una duda, lo que quiero hacer es, apartir de 2 int formar un float.

                ejemplo;

         int x=20;
         int y=53;
         float z;

              Que  z = 20.53;

      Alguien sabe como lo logro?''

                        Saludos
                    Gracias                  :-/
Título: Re: De INT a FLOAT
Publicado por: RedPic en 18 de Septiembre de 2007, 17:05:06
 :mrgreen:
Código: C++
  1. z = x + (Y/100);
Título: Re: De INT a FLOAT
Publicado por: Rulo en 18 de Septiembre de 2007, 17:15:41

        que facil no?''   :D

  y yo buscando una funcion que lo hiciera, como FMOD que vendria haciendo lo contrario.

                          tambien el ATOF( ) me podria servir.

          Gracias Red.

                    Saludos
Título: Re: De INT a FLOAT
Publicado por: maunix en 18 de Septiembre de 2007, 17:47:58
Solo como consejo puede que algun compilador no te haga el casteo automático y debas hacerlo a mano, siguiendo el simplísimo y efectivísimo ejemplo de don diego quedaría


z = (float) x + (float) Y / 100.0 ;


Si bueno y simple, doblemente bueno.  :)
Saludos
Título: Re: De INT a FLOAT
Publicado por: Rulo en 18 de Septiembre de 2007, 18:16:00


  Pues si que los debe llevar (float).


                     Gracias Maunix  :-).
Título: Re: De INT a FLOAT
Publicado por: jfh900 en 19 de Septiembre de 2007, 20:22:47
Que ocurre si y = 5, tendremos: 20.05, cuando deberiamos tener: 20.5.

Podriamos utilizar: sprintf(cadena,"%u\.%u",x,y) y pasarlo a float con strtod(cadena,&ptr);

Un saludo
Título: Re: De INT a FLOAT
Publicado por: Rulo en 19 de Septiembre de 2007, 20:37:00

       Exacto, aun que en donde lo utilizo siempre recibo 2 digitos, por lo que no tengo problema.



                Por ello mencione que podria utilizar ATOF();


    aqui el ejemplo de CCS


              char string [10];
              float x;

              strcpy (string, "123.456");
              x = atof(string);
              // x is now 123.456

                        Saludos   :)
Título: Re: De INT a FLOAT
Publicado por: jfh900 en 19 de Septiembre de 2007, 20:40:10
Exacto, aun que en donde lo utilizo siempre recibo 2 digitos, por lo que no tengo problema.

Ese dato no lo sabiamos, en cuyo caso la solución aportada por RedPic es más eficiente.

Un saludo