Programación General => C/C++ => Mensaje iniciado por: Alfonsos1 en Domingo 10 de Octubre de 2010, 23:05
Título: divisiones exactas
Publicado por: Alfonsos1 en Domingo 10 de Octubre de 2010, 23:05
nesesito que al hacer las cuentas halla presicion
por ejemplo int asd=floor(1/3+1/3+3/7);
nesesito que este codigo le de un valor de 1 a asd, pero el valor que le da es 0
se que eso se deve a que las divisiones se hacen de manera entera, pero no se como solucionar mi problema
Título: Re: divisiones exactas
Publicado por: Geo en Lunes 11 de Octubre de 2010, 07:27
Es más o menos sencillo, si los parámetros son enteros, darán resultados enteros. Si deseas resultados con parte decimal, debes usar tipos de datos que puedan almancenar parte decimal. Cualquiera de estass te puede funcionar:
Código: C
int asd =((float)1/(float)3+(float)1/(float)3+(float)3/(float)7);
int asd =(1.0/3.0+1.0/3.0+3.0/7.0);
int asd =((float)1/3+(float)1/3+(float)3/7);
int asd =(1/3.0+1/3.0+3/7.0);
En la primera, (float) indica que se debe hacer un "cast" (conversión) para convertir a float el tipo de dato a continuación, se hace para cada uno de los datos a manejar. En la segunda, se consigue lo mismo pero indicando que cada dato tiene parte decimal, agregándole el .0. En la tercera y cuarta, se realiza lo mismo, pero solo indicándolo para uno de los datos que intervienen en cada una de las divisiones. En C, cuando se tienen dos datos de diferente tipo para realizar una operación, se hace un "cast" para que los dos datos sean del mismo tipo, para el ejemplo, un dato es int y el otro float, para estos casos el cast se hace para convertir el tipo int a float, con lo que se consigue el mismo efecto que con los dos primeros ejemplos.
Título: Re: divisiones exactas
Publicado por: Alfonsos1 en Lunes 11 de Octubre de 2010, 17:15