Bifalgorithm post · Computer science one · Computing Quadratic Roots
Why does integer division make the Fahrenheit-to-Celsius program produce zero?
Why does integer division make the Fahrenheit-to-Celsius program produce zero? (Computer science one · Computing Quadratic Roots) — "Examples use an ampersand…
Ideas in this flowchart
- Cálculo de Celsius a partir de Fahrenheit y corrección de la división entera
- scanf() usa un ampersand para almacenar la entrada en fahrenheit: scanf("%lf", &fahrenheit);
- La temperatura Celsius se calcula con celsius = (fahrenheit - 32) * (5 / 9);
- printf() muestra al usuario los valores de Fahrenheit y Celsius.
- El programa produce cero para cualquier valor introducido.
- La expresión 5 / 9 usa división entera, que trunca el resultado a cero.
- Una solución posible es reemplazar 5 / 9 por una aproximación como 0.555555.
- Es difícil determinar cuántos decimales hacen suficientemente precisa una constante escrita manualmente.
- Es mejor hacer que al menos uno de los números sea double para evitar la truncación entera.
- La expresión corregida es 5.0 / 9.
- El programa completo se encuentra en el ejemplo de código.