Error de Cáculo

Daniel martinez
29 de Octubre del 2010
saludos:
Dentro de un programa necesito calcular unos datos a través de la siguiente formula:
float tasa1 =(cantidadNacidosVivos/cantidad) * 1000;
float tasa = tasa1 * (12 / mes);
sucede que cuando le pongo el mes 5, me calcula los datos mal, deberia dar 17.592 me da 14.7
Tanto cantidadNacidosVivos, cantidad y mes son valores enteros.
float tasa1=(11/1500) * 1000;
float tasa = 7.33 * (12 / 5);

Probé poniendo cantidadNacidosVivos, cantidad y mes como float y sigue el mismo error.

Capitan Kirk
02 de Noviembre del 2010
El problema que tienes es que estás mezclando constantes enteras con expresiones float. Por ejemplo, cuando calculas tasa

tasa = 7.33 * (12/5)

La expresión entre paréntesis, como expresión entera, se evalúa:

12 / 5 = 2

y el resto de la división se pierde.

La solución es utilizar coma flotante (float o double). En cuanto a las constantes, si vas a utilizar coma flotante, añádeles detrás el punto decimal para forzar a que el compilador te las evalúe como coma flotante en lugar de como entero. Así, por ejemplo, utiliza 12. ó 12.0 en lugar de 12.


Daniel martinez
03 de Noviembre del 2010
Gracias por la aclaración, ya lo había solucionado pero necesitaba una explicación de por qué sucedía eso.
Saludos.