• Domingo 22 de Diciembre de 2024, 07:23

Autor Tema:  Exactitud De Flotantes  (Leído 2520 veces)

avis_phoenix

  • Miembro activo
  • **
  • Mensajes: 96
  • Nacionalidad: mx
    • Ver Perfil
Exactitud De Flotantes
« en: Miércoles 31 de Agosto de 2005, 04:49 »
0
Pues eso cómo definir la exactitud de lso floats, mmm ya sé %.xf, mm planteo difernete la regunta va?

¿Cómo puedo definir la exactitud de puntos decimas que voy a usar en la variable para las operaciones, cómo defino que imprima en pantalla el valor con un valor sin redondear?

En visual C++, con stdio.h
"La envidia en los hombres muestra cuán desdichados se sienten, y su constante atención a lo que hacen o dejan de hacer los demás, muestran cuánto se aburren." "Las religiones, como las luciérnagas, necesitan de oscuridad para brillar." "Los hombres vulgares han inventado la vida en sociedad porque les es más fácil soportar a los demás que soportarse a sí mismos." "Sólo es libre aquello que existe por las necesidades de su propia naturaleza y cuyos actos se originan exclusivamente dentro de sí." "La experiencia nos ha demostrado que a la persona no le resulta nada más difícil de dominar que su lengua." "La madurez del hombre es haber vuelto a encontrar la seriedad con la que jugaba cuando era niño." "Los monos son demasiado buenos para que el hombre pueda descender de ellos." "El hombre, en su orgullo, creó a Dios a su imagen y semejanza" "Lo que hacemos no es nunca comprendido, y siempre es acogido sólo por los elogios o por la crítica."


avis_phoenix

  • Miembro activo
  • **
  • Mensajes: 96
  • Nacionalidad: mx
    • Ver Perfil
Re: Exactitud De Flotantes
« Respuesta #2 en: Miércoles 31 de Agosto de 2005, 13:04 »
0
Pues pro ejemplo quiero hacer una divición de 5/3=x y pues de los puntos decimales uqe salgan quiero solo usar 3 para la siguietne operación 5/x y de los que resulte = quiero usar solo 3 o 6 de los puntos decimales que salgan pero sin redondear, es decir solo cortar tal cual lso puntos decimales si es 0.135999999 no queiro usar 0.136 si no 0.135 o 0.138999 así tal cual, y en la otra pregunta es casi lo mismo, quiero imprimir en pantalla (printf o cout o el qeu sea necesario) lo mismo que me imprima solo el numero de decimales que quiero sin que redondee no quiero 0.136 si no 0.135999, pero a la hora de imprimir ya no en manejo de variables.

¿Se puede?, ¿cómo?
"La envidia en los hombres muestra cuán desdichados se sienten, y su constante atención a lo que hacen o dejan de hacer los demás, muestran cuánto se aburren." "Las religiones, como las luciérnagas, necesitan de oscuridad para brillar." "Los hombres vulgares han inventado la vida en sociedad porque les es más fácil soportar a los demás que soportarse a sí mismos." "Sólo es libre aquello que existe por las necesidades de su propia naturaleza y cuyos actos se originan exclusivamente dentro de sí." "La experiencia nos ha demostrado que a la persona no le resulta nada más difícil de dominar que su lengua." "La madurez del hombre es haber vuelto a encontrar la seriedad con la que jugaba cuando era niño." "Los monos son demasiado buenos para que el hombre pueda descender de ellos." "El hombre, en su orgullo, creó a Dios a su imagen y semejanza" "Lo que hacemos no es nunca comprendido, y siempre es acogido sólo por los elogios o por la crítica."

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Exactitud De Flotantes
« Respuesta #3 en: Miércoles 31 de Agosto de 2005, 14:20 »
0
Hola, no se si existira algun metodo para hacerlo directamente.Le estuve dando vueltas y saque esta forma de hacerlo manualmente.Es un poco engorrosa pero va bien

Código: Text
  1.  
  2.  
  3. void main()
  4. {
  5. float num_dec=1000; //numero de decimales que quieres tomar(tantos ceros como decimales)
  6. float x=23;
  7. float y=12;
  8. float z=x/y;
  9. printf("resultado de la division  %f\n",z);
  10. int entero=(int)z; // cojo la parte entera
  11. float decimal=z-entero; // cojo la parte decimal
  12. printf("parte decimal del resultado  %f\n",decimal);
  13. int num=num_dec*decimal;  // multiplico la parte decimal por el numero de decimales que queremos y lo paso a int
  14. printf("los decimales que nos interesan  %i\n",num);
  15. float solucion=entero+(1/num_dec)*num;  // recompongo el numero con los decimales que queremos
  16. printf("solucion final  %.3f\n",solucion);  // la solucion que querias
  17. }
  18.  
  19.  

Puedes apañarla un poco y meterla en una funcion en la que le pases el numero decimal y el numero de decimales a tomar y que te devuelva el float con los decimales ya apañados.Al numero de decimales a tomar deberias aplicarlo como exponente en una potencia de base 10 para conseguir la variable num_dec del ejemplo

Espero que te sirva

salu2  :hola:

avis_phoenix

  • Miembro activo
  • **
  • Mensajes: 96
  • Nacionalidad: mx
    • Ver Perfil
Re: Exactitud De Flotantes
« Respuesta #4 en: Miércoles 31 de Agosto de 2005, 23:50 »
0
mmm que crees?? pues ya lo probe parecia que si funcionaba pero lo estuve probando coin valores medios raros, y pues no resulto, mira aca esta el codigo tal cual lo modifique si ves solo cambie el numero de decimales que quería y los valores de x y y

Código: Text
  1.  
  2. void main()
  3. {
  4. float num_dec=1000000; //numero de decimales que quieres tomar(tantos ceros como decimales)
  5. float x=3;
  6. float y=164.9999;
  7. float z=x/y;
  8. printf("resultado de la division  %f\n",z);
  9. int entero=(int)z; // cojo la parte entera
  10. float decimal=z-entero; // cojo la parte decimal
  11. printf("parte decimal del resultado  %f\n",decimal);
  12. int num=num_dec*decimal;  // multiplico la parte decimal por el numero de decimales que queremos y lo paso a int
  13. printf("los decimales que nos interesan  %i\n",num);
  14. float solucion=entero+(1/num_dec)*num;  // recompongo el numero con los decimales que queremos
  15. printf("solucion final  %.3f\n",solucion);  // la solucion que querias
  16. }
  17.  
  18.  

y resulto:

resultado de la division  0.018182
parte decimal del resultado  0.018182
los decimales que nos interesan  18181
solucion final  0.018
"La envidia en los hombres muestra cuán desdichados se sienten, y su constante atención a lo que hacen o dejan de hacer los demás, muestran cuánto se aburren." "Las religiones, como las luciérnagas, necesitan de oscuridad para brillar." "Los hombres vulgares han inventado la vida en sociedad porque les es más fácil soportar a los demás que soportarse a sí mismos." "Sólo es libre aquello que existe por las necesidades de su propia naturaleza y cuyos actos se originan exclusivamente dentro de sí." "La experiencia nos ha demostrado que a la persona no le resulta nada más difícil de dominar que su lengua." "La madurez del hombre es haber vuelto a encontrar la seriedad con la que jugaba cuando era niño." "Los monos son demasiado buenos para que el hombre pueda descender de ellos." "El hombre, en su orgullo, creó a Dios a su imagen y semejanza" "Lo que hacemos no es nunca comprendido, y siempre es acogido sólo por los elogios o por la crítica."

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Exactitud De Flotantes
« Respuesta #5 en: Jueves 1 de Septiembre de 2005, 00:08 »
0
Hola

Debes cambiar el numero de dedimales a mostrar o simplemente poner %f

Código: Text
  1.  
  2. printf("solucion final  %.3f\n",solucion);  // la solucion que querias
  3.  
  4.  

Lo puse porque si no quedaria asi

por ejemplo 1,235422 con 3 decimales queda asi  1,2350000 es lo mismo pero queda mejor para mostrarlo

salu2

avis_phoenix

  • Miembro activo
  • **
  • Mensajes: 96
  • Nacionalidad: mx
    • Ver Perfil
Re: Exactitud De Flotantes
« Respuesta #6 en: Jueves 1 de Septiembre de 2005, 03:43 »
0
:P que novatada XD si es cierrto perdón se me salio no me fije pensé que todos eran %f XD oks Gracias
"La envidia en los hombres muestra cuán desdichados se sienten, y su constante atención a lo que hacen o dejan de hacer los demás, muestran cuánto se aburren." "Las religiones, como las luciérnagas, necesitan de oscuridad para brillar." "Los hombres vulgares han inventado la vida en sociedad porque les es más fácil soportar a los demás que soportarse a sí mismos." "Sólo es libre aquello que existe por las necesidades de su propia naturaleza y cuyos actos se originan exclusivamente dentro de sí." "La experiencia nos ha demostrado que a la persona no le resulta nada más difícil de dominar que su lengua." "La madurez del hombre es haber vuelto a encontrar la seriedad con la que jugaba cuando era niño." "Los monos son demasiado buenos para que el hombre pueda descender de ellos." "El hombre, en su orgullo, creó a Dios a su imagen y semejanza" "Lo que hacemos no es nunca comprendido, y siempre es acogido sólo por los elogios o por la crítica."