Error de Cáculo
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.
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.
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.
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.
Gracias por la aclaración, ya lo había solucionado pero necesitaba una explicación de por qué sucedía eso.
Saludos.
Saludos.