• Sábado 14 de Diciembre de 2024, 14:38

Autor Tema:  ¿se Puede Tomar N Espacios De Un Numero Float?  (Leído 1525 veces)

vrash

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
¿se Puede Tomar N Espacios De Un Numero Float?
« en: Domingo 17 de Febrero de 2008, 15:43 »
0
Bueno, pues estoy haciendo un programa, y tengo una parte en la que se mete a un bucle y se hacen unos calculos con algunos numeros del tipo float y despues comparo 2 numeros float, si son iguales se sale del bucle, el problema es que por lo visto rara vez seran iguales por esto:

Código: Text
  1.  
  2. 1.200001
  3. 1.200000
  4.  
  5.  
  6.  

Se dan cuenta que por ese 1 al final, segun el programa no son iguales, y el bucle se repite ve tu a saber cuantas veces. Mi pregunta es que si existe una forma de tomar solo los primeros 3 digitos del float(1.2, que es lo que me interesa) y compararlos para que me quedara algo asi:

Código: Text
  1.  
  2. 1.2
  3.  
  4. 1.2
  5.  
  6.  
  7.  

He buscado pero no he encontrado algo al respecto, por eso pongo que no se si pueda hacer.
Otra cosa, los valores que puse no se tienen que imprimir, solo que los puse para que se viera lo que hace la maquina y por que me di cuenta de que era dificil salir del bucle.
Saludos.

juan1976

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: ¿se Puede Tomar N Espacios De Un Numero Float?
« Respuesta #1 en: Domingo 17 de Febrero de 2008, 17:19 »
0
hola
yo creo que esto debe servirte, yo lo utlice para desplegar un float en un lcd, pero como tu indicas era muy largo y lo solucione de esta manera

cree un variable char

char *ptchar;
ptchar=ftoa(volt,&n) //volt es el nombre de la variable principal
*(ptchar+5)=0        // el valor 5 representa los digitos a comparar      
lcd_prstring(ptchar);            


la clave aqui esta en modificar el 5, si quieres usar 4 digitos entonces +4

espero que te sirva

jedota

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: ¿se Puede Tomar N Espacios De Un Numero Float?
« Respuesta #2 en: Domingo 17 de Febrero de 2008, 17:23 »
0
Te recomiendo usar este codigo de ejemplo (alterando EPSILON):
http://support.microsoft.com/kb/q145889/

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

vrash

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: ¿se Puede Tomar N Espacios De Un Numero Float?
« Respuesta #3 en: Lunes 18 de Febrero de 2008, 06:58 »
0
Me da mucho gusto que me ayuden, pero no entendi algunas partes del codigo que me pasaste juan1976, asi que me gustaria saber si me lo podrias explicar (en especifico el lcd_prstring y el ftoa, que hasta ahora no me los habia topado), lo hago por que me gustaria aprender de ese codigo que me podria servir en un futuro, aunque realmente la explicacion seria meramente didactica, por que ya resolvi el problema  :P.
En un instante se me vino a la mente, que otra manera de llamar a lo que yo buscaba era REDONDEO y pues buscando en google un rato encontre este codigo
Código: Text
  1.  
  2.    float a = 5.66666666;
  3.    printf("%f\n", (int)(a*100)/100.0);
  4.  
  5.  
  6.  

Lo que hace ese codigo es dejarme el numero 1.200001 y 1.200000 simplemente a 1.20, asi el programa me va de perlas.
Como se ve tampoco entendi gran cosa de lo que me pasaste Eternal Idol, pero de todos modos gracias, ya que hay se ve lo que tengo que aprender para mejorar, tratare de estudiarlo con calma, poco a poco y tratar de digerirlo(aunque no se vea complicado, a mi todavia se me hace un poco confuso).
Saludos y Gracias.