Intenta explicarlo [resuelto en comentarios]

Abel Naya


 #include <iostream>


using namespace std;

int main()
{

int entero=0; //entero es entero
float real; //real es real


//-----------------------------------------------------------------en una vez

real=0.00001;

real *= 100000;

entero = real;
cout<<endl<<endl<<"real= "<<real<<"   entero= "<<entero;


//------------------------------------------------------------------en dos veces
real=0.00001;

real *= 10000;
real *= 10;

entero = real;
cout<<endl<<endl<<"real= "<<real<<"   entero= "<<entero;



return 0;
}
 

Resultado en pantalla:

real= 1   entero= 1

real= 1   entero= 0

Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

2 respuestas a Intenta explicarlo [resuelto en comentarios]

  1. Si en el segundo caso pones la segunda multiplicación
    real *= 100 –> entero=9
    si pones
    real *= 1000 –> entero=99

    la cuestión es que en el primer caso el real se almacena como 1.000000
    y en el segundo caso, por arte de los truncados, como 0.999999 !!.

    Es un ejemplo curioso, como muchos a los que da lugar el truncamiento,
    aquí en concreto no es exactamente lo mismo hacer x*100000, que hacer x*10000*10!.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s