C/Visual C - duda con el tipo float

 
Vista:

duda con el tipo float

Publicado por carlín (1 intervención) el 20/04/2008 09:38:32
Tengo el siguiente código:
#include <stdio.h>
#include <stdlib.h>

int main ( )
{
int a;
double b;

scanf("%d",&a);
b=a /2;
printf("%f",b);
system("pause");
return 0;
}
La duda que tengo es que por qué en la pantalla el programa me suelta un número entero, es decir, si ingreso 5 me aparece 2.000000 si ingreso 9 me sale 4.000000, cómo puedo hacer para que la variable b resulte verdaderamente decimal?. Estoy usando el dev c++ como compilador.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:duda con el tipo float

Publicado por nayumi orama (53 intervenciones) el 20/04/2008 10:57:56
Este es un error típico de los novatos.
a es entero, y 2 es entero. La división de dos enteros es siempre un entero.
Haz un casting a double y resuelto.

b = (double)a/(double)2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:duda con el tipo float

Publicado por Mariano (3 intervenciones) el 20/04/2008 10:59:12
Hola Carlin! Mira, esto es por el casteo automatico que hace C para transformar las operaciones!

El compilador, considera que a es un entero, y 2 tambien es un entero, por lo tanto para la division entre enteros, genera un numero entero tmb.

En cambio si hay un numero entero y un numero float o doble, este ultimo predonmina sobre el primero, dando como resultado un numero con coma. Por lo tanto para solucionar este problema, la forma mas sencilla es
cambiar la sentencia

b = a/ 2
POR

b=a/2.0; /*De esta manera es un entero dividio un float */

o

b= (float)a / 2; /*En este caso se cambia el tipo de la variable a entera a float */

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:duda con el tipo float

Publicado por Ezequiel (4 intervenciones) el 13/05/2008 01:49:54
Te sugiero q declares 'a' como double.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar