Cool C/C++

Programacion en C/C++

Home Foros
Bienvenido, Invitado
Por favor Identificarse o Registrarse.    Contraseña olvidada?

Duda con printf
(1 viendo) (1) Invitado
AbajoPágina: 1
TEMA: Duda con printf
#51
Duda con printf Creado el día: 10/05/2011 07:15 Karma: 0
Hola, estuve programando y me encuentro con anamolias con la funcion printf(); que muestro a continuacion. Les cuento que estoy programando en Dev-c++ 4.9.9.2
Observen estos programas

#include <stdlib.h>
#include <conio.h>
main()
{
float a=20, b=100;
printf("\n%f",20/100);
printf("\n%f",a/b);
getchar();
}

Salida:
0.00000
0.20000

Pero si modifico el codigo

#include <stdlib.h>
#include <conio.h>
main()
{
float a=20, b=100;
printf("\n%f",a/b);
printf("\n%f",20/100);
getchar();
}

Genera la salida

0.20000
0.20000

Mi pregunta es como puede ser que esto ocurra o porque ocurre esto estaria muy agradecido si alguin me respondiera.
gracias
Joludi2009
Navegador Iniciado
Mensajes: 1
graphgraph
Usuario Offline Presiona aquí para ver el perfil de este usuario
El administrador ha deshabilitado la escritura pública.
 
#52
Re: Duda con printf Creado el día: 10/05/2011 13:03 Karma: 2
Saludos,

En el primero programa, en la operación 20/100, estás dividiendo 2 enteros, el resultado es otro entero, en este caso 0 y esto es el que muestra el printf, claro con formato de flotante, que es 0.00000

Lo raro es que en el segundo programa si trata a 20/100, como una división de 2 flotantes y el resultado es 0.20000

He leído un poco y no encuentro la causa de este problema, aparentemente es un bug del compilador.

Lo que si puedes hacer para no tener este problema, es tratar los datos como flotantes (ya que el resultado que esperas es también un flotante), cambia:

printf("\n%f",20/100);


Por esto:

printf("\n%f",(float)20/(float)100);


Y con esto se soluciona...
adrianvaca
Administrador
Mensajes: 110
graph
Usuario Offline Presiona aquí para ver el perfil de este usuario
El administrador ha deshabilitado la escritura pública.
El conocimiento es una forma de empezar a ser libre
 
ArribaPágina: 1
obtén los últimos mensajes directamente en tu escritorio