>> David J. MALAN: După cum probabil știți, Temperaturile sunt măsurate cu ajutorul
scale diferite în diferite părți ale lumii.
De exemplu, 212 de grade Fahrenheit este 100 de grade Celsius și 32 de grade
Fahrenheit este de 0 grade Celsius.
Nu ar fi frumos dacă am avea un calculator program care ne-a permis să
conversia de la, să zicem, Fahrenheit de grade Celsius?
>> Ei bine, putem scrie acest program.
Să începem cu primul includ cs50.h, astfel încât să putem folosi o funcție numită
obține float, care, la fel ca get Int, devine o număr de utilizator, dar de data aceasta o
număr în virgulă mobilă - unul cu un punct zecimal.
>> Să se numără, de asemenea, io.h standard, astfel încât să avem acces la
funcții cum ar fi imprimare f.
Și permite, de asemenea a declara principal în mod obișnuit.
>> Să următor solicita utilizatorului pentru o temperatură în Fahrenheit.
Hai acum obține de fapt, că temperatura de la utilizator, în primul rând prin
declararea unei variabile numite f de tip float.
Un float, din nou, ceea ce înseamnă o variabilă care stochează o valoare în virgulă mobilă,
una cu un punct zecimal.
>> Să se atribuie revenirea Valoarea de GET float.
Și apoi să facem un pic de aritmetica pe ea, declarând în primul rând un alt float
numit C pentru Celsius și magazin în C urmare a unor aritmetice comune.
5.0 împărțit de 9,0 ori F minus 32,0.
>> Să acum imprima rezultatul din acest calcul.
la sută F -
ceea ce înseamnă un substituent pentru valoare în virgulă mobilă -
virgulă C pentru a imprima Temperatura în grade Celsius.
Să salvăm finala mea.
Compila cu F la C. Run programul cu slash punct F la C.
>> Și să încercăm cele comun temperaturile.
212 de grade în Fahrenheit este de 100 de grade Celsius.
32 de grade în Fahrenheit este 0 grade în Celsius.
>> Acum, vă permite rafina acest program un pic bit de imprimare nu la fel de multe 0 lui
după care zecimală.
Pentru a face acest lucru, am de gând să du-te înapoi la linia 11.
Și, mai degrabă decât să specificați doar la suta f, Am de gând să se precizeze în schimb, să zicem,
0,1 F, informarea f imprimare pe care numai eu doriți să imprimați o valoare în virgulă mobilă
la o valoare după virgulă.
>> Să salvați din nou programul meu.
Recompilați-l face cu F la C. Apoi, rulați-l cu slash punct F la C. Și
să încercați din nou cu, să zicem, 212, care îmi dă 100,0.
>> Acum, e de remarcat faptul că am făcut ceva foarte în mod deliberat în linia 9.
Observați cum am scris 5 este de 5,0, 9 ca 9.0, și chiar 32 ca 32.0.
Ei bine, primele două din aceste valori au fost foarte în mod deliberat ales pentru a fi
valori în virgulă mobilă, nu doar pentru că de coerență cu restul
de programul meu -
care implică în mod clar plutitoare Punct de valori -
ci pentru că se pare că C, Dacă împărți un int de un alt Int,
rezultând răspuns ai de gând pentru a obține este în sine un întreg, chiar dacă asta înseamnă
a fi nevoie să arunce totul după virgulă.
>> Cu alte cuvinte, dacă am schimba acest lucru 5.0 la 5 sau această 9.0-9 și apoi salvați din nou
programul meu, recompilați cu marca F la C, și apoi re-rulați-l cu slash punct F
la C și de tip într-o intrare de cum ar fi 212, observă că răspunsul am de gând să
se de data aceasta este, de fapt destul de greșit.
0,0 nu este corectă în gradul Celsius ca 212 Fahrenheit.
>> Ei bine, ce se întâmplă?
Ei bine, în linie nouă, pentru că 5 este acum un întreg și pentru că 9 este acum o
număr întreg, rezultatul matematic ar trebui să fie 0.5555 și așa mai departe.
Dar, deoarece rezultatul, conform Regulile C lui, trebuie să fie un int, care
0.5555 devine aruncat, lăsându-ne cu doar 0.
>> Deci, în final, ajung înmulțirea destul de accidental 0 ori f minus
32,0, care este indiferent de ce întotdeauna o să-mi dea 0.
Deci, nu ține cont, în orice moment, folosind valori în virgulă mobilă în apropierea
int, nu s-ar putea în mod necesar obține răspunsul, astfel încât să se aștepte.
Și așa că ai grijă să folosească, așa cum am făcut în Valorile primul caz, cu virgulă mobilă
de-a lungul pentru a evita astfel de probleme.