Autor Tema: Printf para flotante con ceros  (Leído 3152 veces)

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

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Printf para flotante con ceros
« en: 29 de Enero de 2007, 16:25:33 »
Hola

Necesito imprimir un flotante en CCS que tiene el valor 9.8 por ejemplo. En la pantalla LCD quiero que lo muestre como 09.8, y pongo el código...

printf(lcd_putc,"%02.1f",flotante);

pero de todas formas sigue imprimiendo 9.8 en vez de 09.8. Ya probé con %2.1f pero hace lo mismo.

¿Qué me recomiendan?

Gracias

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Printf para flotante con ceros
« Respuesta #1 en: 29 de Enero de 2007, 16:47:25 »
Que version de CCS usas ??
En algunas la conversion numerica no andaba del todo bien.... :-) :-) :-)
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Printf para flotante con ceros
« Respuesta #2 en: 29 de Enero de 2007, 16:59:47 »
Hola

Uso la 3.190.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Printf para flotante con ceros
« Respuesta #3 en: 29 de Enero de 2007, 17:09:35 »
Lamentablemente los de CCS sacaron el listado de versiones de su pagina, pero te aconsejo buscar una version como la 3.249 que es la ultima que anda muy bien y corrije todos estos errores de formato... :mrgreen: :mrgreen: :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Printf para flotante con ceros
« Respuesta #4 en: 29 de Enero de 2007, 18:29:59 »
OK Gracias MGL  :mrgreen:

Desconectado c4_esp_VR

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
    • www.muchotrasto.com
Re: Printf para flotante con ceros
« Respuesta #5 en: 29 de Enero de 2007, 18:46:20 »
Hola:

Aprovechando el hilo me gustaría preguntaros que tipo de conversiones hay para poner en el LCD y como se realizar, si podeis poner ejemplos con difetentes tipos de datos como string, int, float, word, byte, etc...os lo agradecería pues estoy un poco confundido con ese tema  :-) :-) :-) :-) :-) :-) :-) :-) :-) :-)

Un saludete.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Printf para flotante con ceros
« Respuesta #6 en: 29 de Enero de 2007, 18:53:05 »
Lo que puedes hacer es lo siguiente...



Por cierto MGL, tienes razón sobre la versión, hice un viaje en el tiempo gracias a webarchive.org y busqué la misma página pero cuando se leyó en 2006...

http://web.archive.org/web/20060426073030/http://www.ccsinfo.com/devices.php?page=versioninfo

En la versión posterior mejoraron el printf y %f...

 3.210  A bug in the printf %f is fixed
« Última modificación: 29 de Enero de 2007, 18:55:05 por migsantiago »

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Printf para flotante con ceros
« Respuesta #7 en: 29 de Enero de 2007, 19:16:59 »
Ya compilando con la versión 3.245 todavía no corrige el problemita, tendré que truquear unos comandos  :(

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Printf para flotante con ceros
« Respuesta #8 en: 29 de Enero de 2007, 19:24:11 »
migsantiago, cual es el numero maximo que tendras en la parte entera??

para asi pasarte el coddigò

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Printf para flotante con ceros
« Respuesta #9 en: 29 de Enero de 2007, 19:29:34 »
Bueno migsantiago, como sabemos los ceros a la izquierda no tienen valor, es por ello que el compilador no los imprime. Cuando se necesitan debe hacerse por software.

Aca esta:

if (flotante>99)printf(lcd_putc,"0");
if (flotante>9)printf(lcd_putc,"0");
printf (lcd_putc,"%2.1f",flotante);

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Printf para flotante con ceros
« Respuesta #10 en: 29 de Enero de 2007, 19:31:22 »
jejeje eso es lo que estaba pensando programarle

         if(ftemp<10.0)
            {
            lcd_gotoxy(10,2);
            lcd_putc("0");
            }
         else
            lcd_gotoxy(10,2);
         printf(lcd_putc,"%2.1f",ftemp); //muestra el voltaje a modificar


El problema está en que si se pone %02u, la pantalla sí llega a mostrar 03 por ejemplo. Con flotante simplemente no aplica.

Gracias Mouse
« Última modificación: 29 de Enero de 2007, 19:43:06 por migsantiago »

Desconectado c4_esp_VR

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
    • www.muchotrasto.com
Re: Printf para flotante con ceros
« Respuesta #11 en: 30 de Enero de 2007, 12:19:20 »
Gracias migsantiago:

Lo preguntaba pues tengo problemas al poner una cadena de carácteres que proviene del rs232 del pc en el LCD, a ver  si cuando acabe los examenes retomo el trabajo y pongo en práctica los nuevos conocimientos adquiridos  :D :D :D :D :D :D
« Última modificación: 30 de Enero de 2007, 12:28:01 por c4_esp_VR »