[SOLUCIONADO]
Estoy aprendiendo C y encontré algunos problemas durante mi proceso de aprendizaje.
Cuando intento calcular un tipo de datos int y un tipo de datos flotante en una ecuación, terminé obteniendo 2 resultados diferentes. y estoy confundido porque lógicamente el resultado debería ser el mismo.
aquí está mi código versión 1 y versión 2. La diferencia radica en la variable z.
Toda la entrada es 11
ACTUALIZAR 1
gracias a todos por sus comentarios y respuestas. pero todavía estoy confundido acerca de qué papel juega la variable p en el caso 1 y cómo podría llevar a que la variable z fuera 1 en lugar de 0.
Caso 1
int main() { float a, fee, p; int x, y,z; scanf("%f", &a); fee = 0.6 * a; x = (int)(fee); y = (int)(2 * fee - 2 * x); p = fee * 10.0; z = (int)(p - 10 * x - 5 * y); printf("%f %d %d %d", fee, x, y, z); return 0; }Caso 2
int main() { float a, fee, p; int x, y,z; scanf("%f", &a); fee = 0.6 * a; x = (int)(fee); y = (int)(2 * fee - 2 * x); z = (int)(fee * 10.0 - 10 * x - 5 * y); printf("%f %d %d %d", fee, x, y, z); return 0; }1) z = (int)(p - 10 * x - 5 * y); FIIII // Float or Int 2) z = (int)(fee * 10.0 - 10 * x - 5 * y); // semicolon removed FDIIII // Float, Double or Int Todos los cálculos en 1) se realizan con precisión float , en 2) con precisión double .
Sugerencia: siempre prefiera double cuando use valores de coma flotante.
si lanza un número de coma flotante menor que 1 como 0.9f a INT, se convertirá en cero.