>> DAVID J. MALAN: Come probabilmente sapete, Le temperature sono misurate utilizzando
scale differenti nei vari parti del mondo.
Ad esempio, 212 gradi Fahrenheit è 100 gradi centigradi e 32 gradi
Fahrenheit è 0 gradi Celsius.
Non sarebbe bello se avessimo un computer programma che ci ha permesso di
convertire da, diciamo, Fahrenheit a Celsius?
>> Beh, possiamo scrivere quel programma.
Vediamo prima Cominciamo con includono cs50.h, in modo che possiamo utilizzare una funzione chiamata
ottenere galleggiante, che, come get int, ottiene un numero da parte dell'utente, ma questa volta un
numero in virgola mobile - uno con un punto decimale.
>> Facciamo includono inoltre io.h di serie in modo da avere accesso alle
funzioni come la stampa f.
E diciamo anche dichiarare principale nel solito modo.
>> Facciamo il prossimo richiede all'utente di una temperatura in Fahrenheit.
Diamo ora effettivamente ottenere che la temperatura dall'utente, prima da
dichiarazione di una variabile chiamata f di tipo float.
Un galleggiante, di nuovo, il che significa che una variabile memorizza un valore in virgola mobile,
uno con un punto decimale.
>> Assegniamo così il ritorno valore get float.
E allora facciamo un po 'di aritmetica su di esso, prima dichiarando un altro galleggiante
denominata C per Celsius e conservare in C, il risultato di qualche aritmetica comune.
5.0 diviso per 9,0 volte F meno 32,0.
>> Passiamo ora stampare il risultato di questo calcolo.
cento f -
significare un segnaposto per valore in virgola mobile -
comma C per stampare il temperatura in gradi Celsius.
Salviamo la mia finale.
Compilare con F a C. Eseguire il programma con il puntino barra F a C.
>> E proviamo quelli comuni temperature.
212 gradi di Fahrenheit è di 100 gradi Celsius.
32 gradi Fahrenheit è 0 gradi Celsius.
>> Ora lascia perfezionare questo programma un po ' bit non stampa abbastanza come molti di 0
dopo quella decimale.
Per fare questo, ho intenzione di torna alla linea 11.
E piuttosto che specificare cento f, Io vado a specificare, invece, per esempio,
0.1 f, f informare la stampa che ho solo desidera stampare un valore in virgola mobile
per un valore dopo il punto decimale.
>> Facciamo salvare nuovamente il mio programma.
Ricompilare con make F a C. Quindi eseguire nuovamente con dot barra F a C. E
cerchiamo di riprovare con, diciamo, 212, che mi dà 100.0.
>> Ora vale la pena notare che ho fatto qualcosa di molto deliberatamente in linea 9.
Notate come ho scritto 5 è 5.0, 9 come 9.0, e addirittura 32 come 32,0.
Beh, i primi due di quei valori erano molto deliberatamente scelto di essere
valori in virgola mobile, non solo perché della coerenza con il resto
del mio programma -
che si riferiscono chiaramente galleggiante valori in virgola -
ma perché si scopre che C, se si suddividere un int da un altro int, l'
conseguente risposta che si vuole ottenere è per sé un int, anche se questo significa
dover buttare via tutto dopo il punto decimale.
>> In altre parole, se cambio il 5.0 a 5 o questo 9,0-9 e quindi salvare nuovamente
il mio programma, ricompilare con make F a C, e poi ri-eseguirlo con barra dot F
a C e digitare un ingresso 'come 212, notare che la risposta che ho intenzione di
ottenere questa volta è in realtà abbastanza sbagliato.
0.0 non è il giusto grado di Celsius come Fahrenheit 212.
>> Ebbene, che cosa sta succedendo?
Beh, in linea 9, perché 5 è ora un intero e perché 9 è ora un
intero, il risultato matematicamente dovrebbe essere 0,5555 e così via.
Ma poiché il risultato, secondo Le regole di C, deve essere un int, che
0,5555 si butta via, lasciandoci con solo 0.
>> Così, alla fine, finisco moltiplicando piuttosto accidentalmente 0 volte f meno
32.0, che non importa quale andando sempre a darmi 0.
Quindi tenere a mente, in qualsiasi momento utilizzando valori in virgola mobile in prossimità del
int, non si potrebbe necessariamente ottenere la risposta in modo che ci si aspetta.
E quindi aver cura di utilizzare, come ho fatto nel Valori primo caso, in virgola mobile
tutto per evitare tali problemi.