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.