SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: avis_phoenix en Miércoles 31 de Agosto de 2005, 04:49

Título: Exactitud De Flotantes
Publicado por: avis_phoenix en Miércoles 31 de Agosto de 2005, 04:49
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
Título: Re: Exactitud De Flotantes
Publicado por: Diodo en Miércoles 31 de Agosto de 2005, 10:03
Hola

No entiendo muy bien ....., si puedes poner un ejemplo claro de lo que pides

salu2  :hola:
Título: Re: Exactitud De Flotantes
Publicado por: avis_phoenix en Miércoles 31 de Agosto de 2005, 13:04
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?
Título: Re: Exactitud De Flotantes
Publicado por: Diodo en Miércoles 31 de Agosto de 2005, 14:20
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:
Título: Re: Exactitud De Flotantes
Publicado por: avis_phoenix en Miércoles 31 de Agosto de 2005, 23:50
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
Título: Re: Exactitud De Flotantes
Publicado por: Diodo en Jueves 1 de Septiembre de 2005, 00:08
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
Título: Re: Exactitud De Flotantes
Publicado por: avis_phoenix en Jueves 1 de Septiembre de 2005, 03:43
:P que novatada XD si es cierrto perdón se me salio no me fije pensé que todos eran %f XD oks Gracias