• Lunes 23 de Diciembre de 2024, 13:52

Autor Tema:  ¿por Que Sale Esto?  (Leído 1253 veces)

mguerrerop

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
¿por Que Sale Esto?
« en: Sábado 26 de Abril de 2008, 13:50 »
0
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;
}

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: ¿por Que Sale Esto?
« Respuesta #1 en: Sábado 26 de Abril de 2008, 19:11 »
0
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 ;)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: ¿por Que Sale Esto?
« Respuesta #2 en: Sábado 26 de Abril de 2008, 19:39 »
0
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.
La imaginación es el límite.
Hardware & Software | Mexchip