1 00:00:00,000 --> 00:00:02,360 >> David J. Malan: Kao što vjerojatno znate, Temperature se mjere uporabom 2 00:00:02,360 --> 00:00:04,360 različitim razinama u različitim dijelovima svijeta. 3 00:00:04,360 --> 00:00:09,370 Na primjer, 212 stupnjeva celzijusa je 100 stupnjeva Celzija i 32 stupnjeva 4 00:00:09,370 --> 00:00:11,810 Fahrenheit je 0 stupnjeva Celzija. 5 00:00:11,810 --> 00:00:14,230 Zar ne bi bilo lijepo da smo imali računalo program koji nam dopušteno 6 00:00:14,230 --> 00:00:16,950 pretvoriti iz, recimo, Fahrenheit na Celzija? 7 00:00:16,950 --> 00:00:18,510 >> Pa, možemo napisati taj program. 8 00:00:18,510 --> 00:00:24,350 Idemo prvo početi s obuhvaćaju cs50.h, tako da možemo koristiti funkciju nazvanu 9 00:00:24,350 --> 00:00:28,610 dobili plovak, koji, kao i get int, dobiva Broj od korisnika, ali ovaj put 10 00:00:28,610 --> 00:00:31,440 pomičnim zarezom broj - jedan s decimalne točke. 11 00:00:31,440 --> 00:00:34,840 >> Idemo također uključuju standardnu ​​io.h tako da imamo pristup 12 00:00:34,840 --> 00:00:36,230 funkcije poput ispisa f. 13 00:00:36,230 --> 00:00:40,000 I neka je ujedno izjavljujem glavna na uobičajeni način. 14 00:00:40,000 --> 00:00:42,675 >> Idemo naprijed brz korisnik za Temperatura u Fahrenheit. 15 00:00:42,675 --> 00:00:46,050 16 00:00:46,050 --> 00:00:49,220 Nemojmo sada zapravo dobiti tu temperaturu od korisnika, prvo 17 00:00:49,220 --> 00:00:52,910 proglašavanje varijablu f tipa float. 18 00:00:52,910 --> 00:00:56,750 Float, opet, što znači da je varijabla pohranjuje Krajnja vrijednost, 19 00:00:56,750 --> 00:00:58,200 jedan s decimalne točke. 20 00:00:58,200 --> 00:01:01,780 >> Idemo dodijeliti mu povratak Vrijednost get plovak. 21 00:01:01,780 --> 00:01:06,080 A onda idemo napraviti malo aritmetike na njemu, prvo proglašenje drugi plovak 22 00:01:06,080 --> 00:01:11,690 zove C za Celzija i trgovine u C rezultat neke zajedničke aritmetike. 23 00:01:11,690 --> 00:01:19,060 5,0 podijeljena 9,0 puta F minus 32,0. 24 00:01:19,060 --> 00:01:23,440 >> Idemo sada ispisati rezultat ovog izračuna. 25 00:01:23,440 --> 00:01:24,730 posto f - 26 00:01:24,730 --> 00:01:27,890 označavalo rezervirano za Krajnja vrijednost - 27 00:01:27,890 --> 00:01:31,680 zarez C ispisati Temperatura u Celzija. 28 00:01:31,680 --> 00:01:33,000 Idemo spasiti moj finale. 29 00:01:33,000 --> 00:01:38,220 Sastaviti s F u C. pokrenuti program s dot slash F do C. 30 00:01:38,220 --> 00:01:39,940 >> I pokušajmo one uobičajene temperature. 31 00:01:39,940 --> 00:01:45,820 212 stupnjeva celzijusa u je 100 stupnjeva Celzija. 32 00:01:45,820 --> 00:01:50,090 32 stupnjeva celzijusa u je 0 stupnjeva Celzija u. 33 00:01:50,090 --> 00:01:54,240 >> Sada vam precizirati ovaj program malo malo po ne ispisuje prilično onoliko 0-a 34 00:01:54,240 --> 00:01:55,820 nakon tog decimalu. 35 00:01:55,820 --> 00:01:57,940 Da biste to učinili, ja ću vratiti na liniji 11. 36 00:01:57,940 --> 00:02:03,430 I umjesto da samo navesti posto f, Ja ću umjesto odrediti, recimo, 37 00:02:03,430 --> 00:02:08,800 0,1 f, informiranja print f da sam jedina želite ispisati Krajnja vrijednost 38 00:02:08,800 --> 00:02:11,750 na jednoj vrijednosti nakon decimalu. 39 00:02:11,750 --> 00:02:13,630 >> Idemo resave moj program. 40 00:02:13,630 --> 00:02:19,680 Kompilirati ga s make F u C. Tada repriza ga s dot slash F do C. I 41 00:02:19,680 --> 00:02:24,910 idemo ponovo pokušati s, recimo, 212, koji mi daje 100,0. 42 00:02:24,910 --> 00:02:28,360 >> Sada je napomenuti da jesam nešto vrlo svjesno u skladu 9. 43 00:02:28,360 --> 00:02:35,830 Obavijest o tome kako sam napisao 5 je 5,0, 9 što je 9,0, pa čak i 32, u 32,0. 44 00:02:35,830 --> 00:02:39,000 Pa, prva dva od tih vrijednosti su vrlo svjesno izabrao da bude 45 00:02:39,000 --> 00:02:42,200 pomičnim zarezom vrijednosti, ne samo zato što dosljednosti s ostatkom 46 00:02:42,200 --> 00:02:42,940 mog programa - 47 00:02:42,940 --> 00:02:45,110 koji jasno uključuje plutajuće točka vrijednosti - 48 00:02:45,110 --> 00:02:50,210 nego zato što se ispostavilo da je C, ako podijeliti int drugi int, 49 00:02:50,210 --> 00:02:54,350 rezultiralo odgovor ćete dobiti je Sama int, čak i ako to znači da 50 00:02:54,350 --> 00:02:57,450 potrebe da bacaju sve nakon decimalne točke. 51 00:02:57,450 --> 00:03:04,990 >> Drugim riječima, ako sam promijeniti ovu 5,0 do 5 ili to 9,0-9 zatim resave 52 00:03:04,990 --> 00:03:10,550 moj program, kompilirati s make F u C, , a zatim ponovno pokrenuti ga s dot slash F 53 00:03:10,550 --> 00:03:15,310 do C te vrste u input od poput 212, primijetiti da odgovor ću 54 00:03:15,310 --> 00:03:17,860 se ovaj put je zapravo prilično u redu. 55 00:03:17,860 --> 00:03:23,570 0,0 nije točna studij Celzija što je 212 celzijusa. 56 00:03:23,570 --> 00:03:24,500 >> Pa, što se događa? 57 00:03:24,500 --> 00:03:29,410 Pa, u skladu 9, jer je sada 5 broj i zato 9 sada 58 00:03:29,410 --> 00:03:34,810 cijeli broj, rezultat je matematički treba biti 0,5555 i tako dalje. 59 00:03:34,810 --> 00:03:39,120 No, zato je rezultat, prema C pravilima, mora biti int, da 60 00:03:39,120 --> 00:03:44,020 0,5555 dobiva odbačen, ostavljajući nas sa samo 0. 61 00:03:44,020 --> 00:03:48,600 >> Tako je na kraju, sam završiti množenjem sasvim slučajno 0 puta f minus 62 00:03:48,600 --> 00:03:52,830 32,0, što je bez obzira na sve Uvijek će mi dati 0. 63 00:03:52,830 --> 00:03:56,930 Dakle, nemojte imati na umu, u bilo koje vrijeme pomoću pomičnim zarezom vrijednosti u blizini 64 00:03:56,930 --> 00:03:59,860 Ints, možda ne nužno dobili odgovor, tako da očekujem. 65 00:03:59,860 --> 00:04:04,220 I tako se brine za korištenje, kao što sam učinio u Prvi slučaj, s pomičnim zarezom vrijednosti 66 00:04:04,220 --> 00:04:06,530 tijekom kako bi se izbjegle bilo kakve takve probleme. 67 00:04:06,530 --> 00:04:08,267