Cita de: R0LFback en 26 Agosto 2011, 05:53 AMPor problemas de la precisión que tiene el tipo float, podria llegar a dar que un numero es decimal, cuando es entero. Lo mismo con el codigo de karman.
El código no es mio, sino una mera traducción a C de algo que vi en otro foro, espero te sirva.Código (c) [Seleccionar]
#include <stdio.h>
int main()
{
int n;
int f = 0; // Flag
float num;
while (f == 0)
{
printf("Ingrese un numero: ");
scanf("%f", &num);
n = (int)num;
if ((n - num) == (float)0)
{
f = 1;
printf("El numero es entero\n");
break;
} else
{
f = 0;
printf("El numero es decimal\n");
}
}
printf("%d", n);
return 0;
}
Un saludo.
Lo mejor q se puede hacer en este caso es leer el input como un string, validar que sea lo que quiere, y despues, en caso de que sea valido, realizar las conversiones que correspondan.