Título: Duda con "cast" en C Publicado por: diegoCmC en 18 Febrero 2012, 17:08 pm Me parece que no entendi bien del todo eso del cast, ilustro mi idea con codigo a ver si alguien me puede corregir
Citar Código: #include<stdio.h> 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 Título: Re: Duda con "cast" en C Publicado por: Eternal Idol en 18 Febrero 2012, 17:23 pm Para que haga lo que queres numero2 tiene que ser entero, a ver si asi lo ves mas claro:
Código
Título: Re: Duda con "cast" en C Publicado por: diegoCmC en 18 Febrero 2012, 17:30 pm ahhh vale, ya entiendo lo que me pones, gracias.
Ahora como curiosidad, como lo tenia yo, por que el resultado es 9?? Título: Re: Duda con "cast" en C Publicado por: Caster en 18 Febrero 2012, 17:31 pm Yo sabía lo de Eternal Idol pero, me entra la imsa duda que a diego.
Saludos Título: Re: Duda con "cast" en C Publicado por: diegoCmC en 18 Febrero 2012, 17:32 pm claro, es que 12/1.2=10 no se por que pone 9 :S
Título: Re: Duda con "cast" en C Publicado por: Eternal Idol en 18 Febrero 2012, 17:52 pm Es un problema de precision, si usas double te va a dar 10, con float la division da algo asi como 9.99999960263572 ...
Título: Re: Duda con "cast" en C Publicado por: farresito en 19 Febrero 2012, 16:59 pm 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. |