>> David J. Malan: Kao što vjerojatno znate, Temperature se mjere uporabom
različitim razinama u različitim dijelovima svijeta.
Na primjer, 212 stupnjeva celzijusa je 100 stupnjeva Celzija i 32 stupnjeva
Fahrenheit je 0 stupnjeva Celzija.
Zar ne bi bilo lijepo da smo imali računalo program koji nam dopušteno
pretvoriti iz, recimo, Fahrenheit na Celzija?
>> Pa, možemo napisati taj program.
Idemo prvo početi s obuhvaćaju cs50.h, tako da možemo koristiti funkciju nazvanu
dobili plovak, koji, kao i get int, dobiva Broj od korisnika, ali ovaj put
pomičnim zarezom broj - jedan s decimalne točke.
>> Idemo također uključuju standardnu ​​io.h tako da imamo pristup
funkcije poput ispisa f.
I neka je ujedno izjavljujem glavna na uobičajeni način.
>> Idemo naprijed brz korisnik za Temperatura u Fahrenheit.
Nemojmo sada zapravo dobiti tu temperaturu od korisnika, prvo
proglašavanje varijablu f tipa float.
Float, opet, što znači da je varijabla pohranjuje Krajnja vrijednost,
jedan s decimalne točke.
>> Idemo dodijeliti mu povratak Vrijednost get plovak.
A onda idemo napraviti malo aritmetike na njemu, prvo proglašenje drugi plovak
zove C za Celzija i trgovine u C rezultat neke zajedničke aritmetike.
5,0 podijeljena 9,0 puta F minus 32,0.
>> Idemo sada ispisati rezultat ovog izračuna.
posto f -
označavalo rezervirano za Krajnja vrijednost -
zarez C ispisati Temperatura u Celzija.
Idemo spasiti moj finale.
Sastaviti s F u C. pokrenuti program s dot slash F do C.
>> I pokušajmo one uobičajene temperature.
212 stupnjeva celzijusa u je 100 stupnjeva Celzija.
32 stupnjeva celzijusa u je 0 stupnjeva Celzija u.
>> Sada vam precizirati ovaj program malo malo po ne ispisuje prilično onoliko 0-a
nakon tog decimalu.
Da biste to učinili, ja ću vratiti na liniji 11.
I umjesto da samo navesti posto f, Ja ću umjesto odrediti, recimo,
0,1 f, informiranja print f da sam jedina želite ispisati Krajnja vrijednost
na jednoj vrijednosti nakon decimalu.
>> Idemo resave moj program.
Kompilirati ga s make F u C. Tada repriza ga s dot slash F do C. I
idemo ponovo pokušati s, recimo, 212, koji mi daje 100,0.
>> Sada je napomenuti da jesam nešto vrlo svjesno u skladu 9.
Obavijest o tome kako sam napisao 5 je 5,0, 9 što je 9,0, pa čak i 32, u 32,0.
Pa, prva dva od tih vrijednosti su vrlo svjesno izabrao da bude
pomičnim zarezom vrijednosti, ne samo zato što dosljednosti s ostatkom
mog programa -
koji jasno uključuje plutajuće točka vrijednosti -
nego zato što se ispostavilo da je C, ako podijeliti int drugi int,
rezultiralo odgovor ćete dobiti je Sama int, čak i ako to znači da
potrebe da bacaju sve nakon decimalne točke.
>> Drugim riječima, ako sam promijeniti ovu 5,0 do 5 ili to 9,0-9 zatim resave
moj program, kompilirati s make F u C, , a zatim ponovno pokrenuti ga s dot slash F
do C te vrste u input od poput 212, primijetiti da odgovor ću
se ovaj put je zapravo prilično u redu.
0,0 nije točna studij Celzija što je 212 celzijusa.
>> Pa, što se događa?
Pa, u skladu 9, jer je sada 5 broj i zato 9 sada
cijeli broj, rezultat je matematički treba biti 0,5555 i tako dalje.
No, zato je rezultat, prema C pravilima, mora biti int, da
0,5555 dobiva odbačen, ostavljajući nas sa samo 0.
>> Tako je na kraju, sam završiti množenjem sasvim slučajno 0 puta f minus
32,0, što je bez obzira na sve Uvijek će mi dati 0.
Dakle, nemojte imati na umu, u bilo koje vrijeme pomoću pomičnim zarezom vrijednosti u blizini
Ints, možda ne nužno dobili odgovor, tako da očekujem.
I tako se brine za korištenje, kao što sam učinio u Prvi slučaj, s pomičnim zarezom vrijednosti
tijekom kako bi se izbjegle bilo kakve takve probleme.