SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: mguerrerop en Sábado 26 de Abril de 2008, 13:50

Título: ¿por Que Sale Esto?
Publicado por: mguerrerop en Sábado 26 de Abril de 2008, 13:50
Buenas, ¿por qué sale ésto en un código tan simple?
¿Por qué num3 no toma al final el valor "5"?
¿Hay alguna forma de conseguirlo?

#include <iostream.h>
#include <stdlib.h>

int main()
{
      float num1,num2,num3;;
      num1=5;
      num2=num1+1e30;
      num3=num2-1e30;
      cout<<(num3);



      system("PAUSE");
      return 0;
}
Título: Re: ¿por Que Sale Esto?
Publicado por: ProfesorX en Sábado 26 de Abril de 2008, 19:11
Cita de: "mguerrerop"
¿Por qué num3 no toma al final el valor "5"?
¿Hay alguna forma de conseguirlo?
 
1. Porque num3 es flotante (float), y los numeros flotantes siempre tiene errores de redondeo, nunca obtendras numeros exactos si utilizas float, recuerda que son aproximaciones al numero verdadero.

2. No hay manera, tendras que vivir con ello ;)
Título: Re: ¿por Que Sale Esto?
Publicado por: Geo en Sábado 26 de Abril de 2008, 19:39
Considero que en este caso no se debe a las aproximaciones, sino a que un tipo float no tiene los bytes suficientes para poder almacenar una variable de esa magnitud, por ello, desde la primera operación, el tipo llegó a su límite y le es imposible poder guardar el valor resultante.