Me parece que no entendi bien del todo eso del cast, ilustro mi idea con codigo a ver si alguien me puede corregir
Citar#include<stdio.h>
main()
{
float numero=12.5, numero2=1.2;
int division;
division=(int)numero/numero2;
printf("El valor de la division es %d\n", division);
system("pause");
return 0;
}
Cuando ejecuto este código, la idea que tengo yo es, que antes de realizar la división numero/numero2, lo que realiza es convertir numero a un entero de valor 12, y numero2 a un entero de valor 1, por lo tanto al dividirlos se almacenaria el resultado, 12, en la variable división, pero sin embargo el programa me muestra como resultado 9.
A ver is alguien puede ayudarme
Para que haga lo que queres numero2 tiene que ser entero, a ver si asi lo ves mas claro:
division = (int)numero / (int)numero2;
ahhh vale, ya entiendo lo que me pones, gracias.
Ahora como curiosidad, como lo tenia yo, por que el resultado es 9??
Yo sabía lo de Eternal Idol pero, me entra la imsa duda que a diego.
Saludos
claro, es que 12/1.2=10 no se por que pone 9 :S
Es un problema de precision, si usas double te va a dar 10, con float la division da algo asi como 9.99999960263572 ...
Sí. Como bien dice Eternal, a nivel muy bajo, el procesador tiene problemas de precisión. Si tienes que hacer casts con el int, por ejemplo, a veces va bien sumar 0.0001 o algo así. Cifras bajas.. Recuerda que un cast NO es redondear, es TRUNCAR (quitar todos los decimales a secas). Si tienes 10.0001 y haces un cast de int, te saldra 10, pero si tienes 9.99999, te quedaras con el 9.
Un abrazo.