Autor Tema: Redondear un float para hacer los calculos  (Leído 3569 veces)

Desconectado nakarar

  • Junior Member
  • **
  • Mensajes: 37
    • http://www.cuartetoillici.com
Redondear un float para hacer los calculos
« en: 02 de Abril de 2006, 08:57:46 pm »
Resulta que estoy haciendo una práctica para la universidad, es un ejercicio para praticar de teleco que trata de pasar un numero de decimal a IEEE-754. La cuestión es que cuando quiero pasar la parte decimal (p.ej: .7826) me cuela en los calculos unos decimales al final.
el codigo es:
kTam vale 19;
num2 es los decimales del numero introducido, en este caso: 0.7826;

for (i=0; i<kTam; i++)
{
   aux1=num2*2;
   aux2=(int)aux1;
   binario=aux2;         //Almaceno en un vector de enteros para un uso posterior
   num2=(float)aux1-aux2;
   cout<<num2<<endl;           // Aqui deberian salir solo 4 decimales, pero me coloca 0.000001, 0.000002, etc... despues de cada operacion
   }

El problema es lo que digo en el comentario. Para las operaciones necesito 4 decimales, porque sino, como ocurre en el ejemplo, al final me llega al 0 y es algo q no deberia... no se si me explico... :verysad:
.:: Cuarteto de viento ILLICI ::.
www.cuartetoillici.com

Desconectado Saturn

  • Junior Member
  • **
  • Mensajes: 72
    • Space Saturn
Re: Redondear un float para hacer los calculos
« Respuesta #1 en: 03 de Abril de 2006, 09:05:18 pm »
Hola compañero!

He estado repasando un poco el estándar IEEE 754, con el que no tengo mucha experiencia.
Veo que hay 2 formatos:

Simple precisión, 32 bits (Word):
1 bit para el signo
8 bits para exponente
23 bits para la mantisa

Simple precisión, 64 bits (DWord):
1 bit para el signo
11 bits para la exponente
52 bits para la mantisa

Por lo que yo entiendo, y corrígeme si me equivoco, aunque quieras operar con 4 decimales, creo que deberías asegurar que el resto de decimales están a cero, uses el formato que uses.
Y cuando presentes el resultado, al redondear, el error aceptado debería eliminar ese decimal que te aparece.

Por otro lado, sin el resto de código me cuesta entender el algoritmo, tengo algunas dudas:

1.- ¿Cuanto vale? endl
2.- ¿Que tipo es?
3.- IDEM para cout.

En cualquier caso, creo que el problema está en los ceros que has de asegurar a la derecha, aunque solo trabajes con 4 decimales.

Pero solo es una suposición, pues no he trabajado con este formato.

Dinos algo.

P.D. Una Fuentes interesantes:
1.- Wikipedia: http://es.wikipedia.org/wiki/IEEE_754

2.- Calculadora On-Line: http://babbage.cs.qc.edu/courses/cs341/IEEE-754.html
(Aquí puedes ver que también le sale un decimal al final en el modo 32 bits, y que no sale en el de 64, por lo de la precisión.)

3.- Página de recursos de unos compañeros de fatigas: http://dac.escet.urjc.es/lrincon/enlaces/representacion-informacion.html
Saturn
S;-D
WEB: http://spacesaturn.metropoliglobal.com
El mejor escondite, el más evidente

 

Aviso Legal | Política de Privacidad | Política de Cookies

el contenido de la web se rige bajo licencia
Creative Commons License