DAVID J. MALAN: Como usted probablemente sabe, las temperaturas se miden utilizando diferentes escalas en diferentes partes del mundo. Por ejemplo, 212 grados Fahrenheit es 100 grados centígrados y 32 grados Fahrenheit es de 0 grados Celsius. ¿No sería bueno si tuviéramos un ordenador programa que nos permitió convertir de, digamos, Fahrenheit a Celsius? Bueno, podemos escribir el programa. Primero vamos a empezar con incluir cs50.h, por lo que podemos utilizar una función llamada conseguir flotador, que al igual que get int, obtiene un número del usuario, pero esta vez un número de punto flotante - una con un punto decimal. Supongamos también incluyen io.h estándar para que tengamos acceso a funciones como la impresión f. Y también vamos a declarar principal en la forma habitual. Vamos próximo solicitar al usuario una temperatura en grados Fahrenheit. Ahora vamos a conseguir realmente que la temperatura desde el usuario, por primera declara una variable llamada f de tipo float. Un flotador, de nuevo, lo que significa una variable que almacena un valor de punto flotante, uno con un punto decimal. Vamos a asignarle el retorno valor de get flotador. Y luego vamos a hacer un poco de aritmética en ella, primero se declara otro flotador llamado C para Celsius y almacenar en la C resultado de un poco de aritmética común. 5.0 dividido por 9,0 veces F menos 32,0. Ahora vamos a imprimir el resultado de este cálculo. ciento f - lo que significa un marcador de posición para valor de coma flotante - coma C a imprimir la temperatura en grados Celsius. Vamos a guardar mi final. Compilar con F a C. Ejecutar el programa con el punto de tala F a C. Y vamos a tratar de los comunes temperaturas. 212 grados en Fahrenheit es 100 grados Celsius. 32 grados en Fahrenheit es 0 grados en Celsius. Ahora vamos a refinar este programa un poco poco a no impresión bastante como muchos de 0 después de esa cifra decimal. Para ello, voy a volver a la línea 11. Y en lugar de especificar por ciento f, Voy a especificar en su lugar, por ejemplo, 0.1 f, f impresión informando que sólo quiere imprimir un valor de coma flotante en un valor después del punto decimal. Vamos a volver a guardar mi programa. Vuelva a compilar con make F a C. Entonces ejecútelo nuevamente con el punto slash F a C. Y vamos a reintentar con, por ejemplo, 212, lo que me da 100,0. Ahora vale la pena señalar que hice algo muy deliberadamente en la línea 9. Observe cómo escribí 5 es 5,0, 9 como 9.0, y hasta 32 como 32,0. Bueno, los dos primeros de esos valores eran muy deliberadamente escogido para ser valores de punto flotante, no sólo porque de coherencia con el resto de mi programa - que implica claramente flotante valores de punto - sino porque resulta que C, Si dividir un entero por otro int, el respuesta que resulta que vas a conseguir es sí un int, incluso si eso significa tener que tirar todo después del punto decimal. En otras palabras, si cambio esto de 5,0 a 5 o este 9,0-9 y luego volver a guardar mi programa, vuelva a compilar con maquillaje F a C, y luego volver a ejecutarlo con slash dot F a C y escribe una entrada de como 212, cuenta de que la respuesta que voy a conseguir este tiempo es en realidad bastante mal. 0,0 no es el correcto grado de Celsius como Fahrenheit 212. Bueno, ¿qué está pasando? Pues bien, en la línea 9, porque 5 es ahora una entero y porque 9 es ahora un entero, el resultado matemáticamente debería ser 0,5555, etc. Pero debido a que el resultado, según Reglas de C, tiene que ser un int, que 0.5555 se tira, dejándonos con sólo 0. Así que al final, me acaban de multiplicar bastante accidentalmente 0 veces f menos 32.0, que es sin importar lo Siempre me va a dar 0. Así que tenga en cuenta, en cualquier momento usando valores de punto flotante en la proximidad de ints, puede que no necesariamente obtener la respuesta por lo que espera. Y así que tenga cuidado de usar, como lo hice en el valores primer caso, en coma flotante a lo largo para evitar cualquier tipo de problemas.