1 00:00:00,000 --> 00:00:02,360 >> David J. MALAN: După cum probabil știți, Temperaturile sunt măsurate cu ajutorul 2 00:00:02,360 --> 00:00:04,360 scale diferite în diferite părți ale lumii. 3 00:00:04,360 --> 00:00:09,370 De exemplu, 212 de grade Fahrenheit este 100 de grade Celsius și 32 de grade 4 00:00:09,370 --> 00:00:11,810 Fahrenheit este de 0 grade Celsius. 5 00:00:11,810 --> 00:00:14,230 Nu ar fi frumos dacă am avea un calculator program care ne-a permis să 6 00:00:14,230 --> 00:00:16,950 conversia de la, să zicem, Fahrenheit de grade Celsius? 7 00:00:16,950 --> 00:00:18,510 >> Ei bine, putem scrie acest program. 8 00:00:18,510 --> 00:00:24,350 Să începem cu primul includ cs50.h, astfel încât să putem folosi o funcție numită 9 00:00:24,350 --> 00:00:28,610 obține float, care, la fel ca get Int, devine o număr de utilizator, dar de data aceasta o 10 00:00:28,610 --> 00:00:31,440 număr în virgulă mobilă - unul cu un punct zecimal. 11 00:00:31,440 --> 00:00:34,840 >> Să se numără, de asemenea, io.h standard, astfel încât să avem acces la 12 00:00:34,840 --> 00:00:36,230 funcții cum ar fi imprimare f. 13 00:00:36,230 --> 00:00:40,000 Și permite, de asemenea a declara principal în mod obișnuit. 14 00:00:40,000 --> 00:00:42,675 >> Să următor solicita utilizatorului pentru o temperatură în Fahrenheit. 15 00:00:42,675 --> 00:00:46,050 16 00:00:46,050 --> 00:00:49,220 Hai acum obține de fapt, că temperatura de la utilizator, în primul rând prin 17 00:00:49,220 --> 00:00:52,910 declararea unei variabile numite f de tip float. 18 00:00:52,910 --> 00:00:56,750 Un float, din nou, ceea ce înseamnă o variabilă care stochează o valoare în virgulă mobilă, 19 00:00:56,750 --> 00:00:58,200 una cu un punct zecimal. 20 00:00:58,200 --> 00:01:01,780 >> Să se atribuie revenirea Valoarea de GET float. 21 00:01:01,780 --> 00:01:06,080 Și apoi să facem un pic de aritmetica pe ea, declarând în primul rând un alt float 22 00:01:06,080 --> 00:01:11,690 numit C pentru Celsius și magazin în C urmare a unor aritmetice comune. 23 00:01:11,690 --> 00:01:19,060 5.0 împărțit de 9,0 ori F minus 32,0. 24 00:01:19,060 --> 00:01:23,440 >> Să acum imprima rezultatul din acest calcul. 25 00:01:23,440 --> 00:01:24,730 la sută F - 26 00:01:24,730 --> 00:01:27,890 ceea ce înseamnă un substituent pentru valoare în virgulă mobilă - 27 00:01:27,890 --> 00:01:31,680 virgulă C pentru a imprima Temperatura în grade Celsius. 28 00:01:31,680 --> 00:01:33,000 Să salvăm finala mea. 29 00:01:33,000 --> 00:01:38,220 Compila cu F la C. Run programul cu slash punct F la C. 30 00:01:38,220 --> 00:01:39,940 >> Și să încercăm cele comun temperaturile. 31 00:01:39,940 --> 00:01:45,820 212 de grade în Fahrenheit este de 100 de grade Celsius. 32 00:01:45,820 --> 00:01:50,090 32 de grade în Fahrenheit este 0 grade în Celsius. 33 00:01:50,090 --> 00:01:54,240 >> Acum, vă permite rafina acest program un pic bit de imprimare nu la fel de multe 0 lui 34 00:01:54,240 --> 00:01:55,820 după care zecimală. 35 00:01:55,820 --> 00:01:57,940 Pentru a face acest lucru, am de gând să du-te înapoi la linia 11. 36 00:01:57,940 --> 00:02:03,430 Și, mai degrabă decât să specificați doar la suta f, Am de gând să se precizeze în schimb, să zicem, 37 00:02:03,430 --> 00:02:08,800 0,1 F, informarea f imprimare pe care numai eu doriți să imprimați o valoare în virgulă mobilă 38 00:02:08,800 --> 00:02:11,750 la o valoare după virgulă. 39 00:02:11,750 --> 00:02:13,630 >> Să salvați din nou programul meu. 40 00:02:13,630 --> 00:02:19,680 Recompilați-l face cu F la C. Apoi, rulați-l cu slash punct F la C. Și 41 00:02:19,680 --> 00:02:24,910 să încercați din nou cu, să zicem, 212, care îmi dă 100,0. 42 00:02:24,910 --> 00:02:28,360 >> Acum, e de remarcat faptul că am făcut ceva foarte în mod deliberat în linia 9. 43 00:02:28,360 --> 00:02:35,830 Observați cum am scris 5 este de 5,0, 9 ca 9.0, și chiar 32 ca 32.0. 44 00:02:35,830 --> 00:02:39,000 Ei bine, primele două din aceste valori au fost foarte în mod deliberat ales pentru a fi 45 00:02:39,000 --> 00:02:42,200 valori în virgulă mobilă, nu doar pentru că de coerență cu restul 46 00:02:42,200 --> 00:02:42,940 de programul meu - 47 00:02:42,940 --> 00:02:45,110 care implică în mod clar plutitoare Punct de valori - 48 00:02:45,110 --> 00:02:50,210 ci pentru că se pare că C, Dacă împărți un int de un alt Int, 49 00:02:50,210 --> 00:02:54,350 rezultând răspuns ai de gând pentru a obține este în sine un întreg, chiar dacă asta înseamnă 50 00:02:54,350 --> 00:02:57,450 a fi nevoie să arunce totul după virgulă. 51 00:02:57,450 --> 00:03:04,990 >> Cu alte cuvinte, dacă am schimba acest lucru 5.0 la 5 sau această 9.0-9 și apoi salvați din nou 52 00:03:04,990 --> 00:03:10,550 programul meu, recompilați cu marca F la C, și apoi re-rulați-l cu slash punct F 53 00:03:10,550 --> 00:03:15,310 la C și de tip într-o intrare de cum ar fi 212, observă că răspunsul am de gând să 54 00:03:15,310 --> 00:03:17,860 se de data aceasta este, de fapt destul de greșit. 55 00:03:17,860 --> 00:03:23,570 0,0 nu este corectă în gradul Celsius ca 212 Fahrenheit. 56 00:03:23,570 --> 00:03:24,500 >> Ei bine, ce se întâmplă? 57 00:03:24,500 --> 00:03:29,410 Ei bine, în linie nouă, pentru că 5 este acum un întreg și pentru că 9 este acum o 58 00:03:29,410 --> 00:03:34,810 număr întreg, rezultatul matematic ar trebui să fie 0.5555 și așa mai departe. 59 00:03:34,810 --> 00:03:39,120 Dar, deoarece rezultatul, conform Regulile C lui, trebuie să fie un int, care 60 00:03:39,120 --> 00:03:44,020 0.5555 devine aruncat, lăsându-ne cu doar 0. 61 00:03:44,020 --> 00:03:48,600 >> Deci, în final, ajung înmulțirea destul de accidental 0 ori f minus 62 00:03:48,600 --> 00:03:52,830 32,0, care este indiferent de ce întotdeauna o să-mi dea 0. 63 00:03:52,830 --> 00:03:56,930 Deci, nu ține cont, în orice moment, folosind valori în virgulă mobilă în apropierea 64 00:03:56,930 --> 00:03:59,860 int, nu s-ar putea în mod necesar obține răspunsul, astfel încât să se aștepte. 65 00:03:59,860 --> 00:04:04,220 Și așa că ai grijă să folosească, așa cum am făcut în Valorile primul caz, cu virgulă mobilă 66 00:04:04,220 --> 00:04:06,530 de-a lungul pentru a evita astfel de probleme. 67 00:04:06,530 --> 00:04:08,267