Autor Tema: problema con FloatToStr()  (Leído 5366 veces)

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

Desconectado electroipod

  • PIC16
  • ***
  • Mensajes: 166
problema con FloatToStr()
« en: 14 de Noviembre de 2011, 20:50:44 »
Hola tengo un problema de conversion de float a cadena y quisiera saber como puedo hacer para solucionarlo el problema es el siguiente:
ejm:
float dato1 =23;
float dato2=12;
char cadena[20];
dato1=dato1*dato2;
floattostr(dato1,cadena);
lcd_out(1,1,cadena);
al momento de convertirlo y visualizarlo por un lcd el resultado de cadena es 275.9999 cuando deberia ser 276, como puedo, solucionar esto gracias por sus respuestas.
estoy utilizando el Mikroc pro 4.6
« Última modificación: 14 de Noviembre de 2011, 21:49:35 por electroipod »

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: problema con FloatToStr()
« Respuesta #1 en: 14 de Noviembre de 2011, 21:38:07 »
275.999999999.. = 276
aqui la demostracion http://es.wikipedia.org/wiki/0,9_peri%C3%B3dico

Mostrame como imprimis la cadena por favor, hay algunas cosas que podes hacer para q el printf te muestre mas o menos decimales.
Saludos!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: problema con FloatToStr()
« Respuesta #2 en: 15 de Noviembre de 2011, 00:46:54 »
como dice gera, tu resultado esta bien, no uso mikroc pero checa en como imprimir los datos para que te redondee los decimales
"Nada es imposible, no si puedes imaginarlo"

Desconectado fenixariel

  • PIC10
  • *
  • Mensajes: 39
    • www.delphiandpic.jimdo.com
Re: problema con FloatToStr()
« Respuesta #3 en: 18 de Noviembre de 2011, 19:01:56 »
Ummm en MikroC podrias formatear el resultado y usar no se fprintf() para no mostras decimales.........pero porque usas FloatToStr(), si ninguno de los numeros es float??????????

no deberias usar IntToStr()???

Saludos..........
« Última modificación: 18 de Noviembre de 2011, 19:04:01 por fenixariel »

Desconectado electroipod

  • PIC16
  • ***
  • Mensajes: 166
Re: problema con FloatToStr()
« Respuesta #4 en: 19 de Noviembre de 2011, 11:34:13 »
es un ejemplo ya que esas variables pueden ser numeros decimales y no solo puedo multiplicarlas sino tambien dividirlas e igual obtendria numeros decimales ahora en mikroc no se utiliza printf() esa funcion no hay en este IDE, hasta ahora sigo buscando la forma de redondear el resultado para que no me aparesca esos .9999.

Desconectado fenixariel

  • PIC10
  • *
  • Mensajes: 39
    • www.delphiandpic.jimdo.com
Re: problema con FloatToStr()
« Respuesta #5 en: 19 de Noviembre de 2011, 17:14:39 »
En la version 5.30 veo esta funcion, muy parecida a printf.


/* esto extraido de la ayuda de MikroC Pro v5.30*/

void PrintOut(void (*prntoutfunc)(char ch), const char *f,...);



PrintOut is used to format data and print them in a way defined by the user through a print handler function.

Parameters :

prntoutfunc: print handler function
f: format string

The f argument is a format string and may be composed of characters, escape sequences, and format specifications. Ordinary characters and escape sequences are copied to the print handler in order in which they are interpreted. Format specifications always begin with a percent sign (%) and require additional arguments to be included in the function call.

The format string is read from left to right. The first format specification encountered refers to the first argument after the f parameter and then converts and outputs it using the format specification. The second format specification accesses the second argument after f, and so on. If there are more arguments than format specifications, the extra arguments are ignored. Results are unpredictable if there are not enough arguments for the format specifications. The format specifications have the following format:

  % [flags] [width] [.precision]  [{ l | L }]  conversion_type
Each field in the format specification can be a single character or a number which specifies a particular format option. The conversion_type field is where a single character specifies that an argument is interpreted as a character, string, number, or pointer, as shown in the following table:


Desconectado electroipod

  • PIC16
  • ***
  • Mensajes: 166
Re: problema con FloatToStr()
« Respuesta #6 en: 20 de Noviembre de 2011, 21:30:47 »
Gracias por el dato pero he bajado esta version y solo me permite un programa no mayor de 2K, buscare si encuentro el 5.3 full, se nota que esta ultima version es mucho mas completo que el 4.6, gracias man.
« Última modificación: 20 de Noviembre de 2011, 21:34:29 por electroipod »

Desconectado fenixariel

  • PIC10
  • *
  • Mensajes: 39
    • www.delphiandpic.jimdo.com
Re: problema con FloatToStr()
« Respuesta #7 en: 21 de Noviembre de 2011, 03:12:18 »
Me acabo de dar cuenta que en versiones anteriores a la 5.3 ya estaba presente esa libreria....     upsss :oops: :oops:




Saludos...........