1 00:00:00,000 --> 00:00:02,360 >> David J. MALAN: Jak zapewne wiesz, Temperatury mierzone są za pomocą 2 00:00:02,360 --> 00:00:04,360 różne skale w różnych części świata. 3 00:00:04,360 --> 00:00:09,370 Na przykład, to 212 stopni Celsjusza 100 stopni, a 32 stopni Celsjusza 4 00:00:09,370 --> 00:00:11,810 Fahrenheit jest 0 stopni Celsjusza. 5 00:00:11,810 --> 00:00:14,230 Czy nie byłoby miło, gdybyśmy mieli komputer program, który pozwolił nam 6 00:00:14,230 --> 00:00:16,950 przekonwertować z, powiedzmy, Fahrenheita na Celsjusza? 7 00:00:16,950 --> 00:00:18,510 >> Cóż, możemy napisać ten program. 8 00:00:18,510 --> 00:00:24,350 Niech najpierw zacząć zawierać cs50.h, tak, że możemy korzystać z funkcji o nazwie 9 00:00:24,350 --> 00:00:28,610 dostać pływaka, który, jak get int, dostaje liczbę od użytkownika, przy czym tym razem 10 00:00:28,610 --> 00:00:31,440 liczby zmiennoprzecinkowe - jeden z przecinkiem. 11 00:00:31,440 --> 00:00:34,840 >> Załóżmy także standardowy io.h tak, że mamy dostęp do 12 00:00:34,840 --> 00:00:36,230 funkcje, takie jak drukarki f. 13 00:00:36,230 --> 00:00:40,000 I niech też zadeklarować główną w znany sposób. 14 00:00:40,000 --> 00:00:42,675 >> Niech następne poprosi użytkownika o temperatury w stopniach Fahrenheita. 15 00:00:42,675 --> 00:00:46,050 16 00:00:46,050 --> 00:00:49,220 Niech teraz rzeczywiście się, że temperatura od użytkownika, najpierw 17 00:00:49,220 --> 00:00:52,910 deklarując zmienną f typu float. 18 00:00:52,910 --> 00:00:56,750 Pływak, ponownie, co oznacza, że ​​zmienna przechowuje wartość zmiennoprzecinkową, 19 00:00:56,750 --> 00:00:58,200 jeden z przecinkiem. 20 00:00:58,200 --> 00:01:01,780 >> Miejmy przypisać mu powrót wartość get pływaka. 21 00:01:01,780 --> 00:01:06,080 A następnie zróbmy trochę arytmetyki na nim, najpierw deklarując innego pływaka 22 00:01:06,080 --> 00:01:11,690 zwany C Celsjusza i przechowywać w C wynikiem jakiegoś wspólnego arytmetyki. 23 00:01:11,690 --> 00:01:19,060 5,0 podzielone przez 9,0 razy F minus 32,0. 24 00:01:19,060 --> 00:01:23,440 >> Załóżmy teraz wydrukować wynik tego obliczenia. 25 00:01:23,440 --> 00:01:24,730 procent f - 26 00:01:24,730 --> 00:01:27,890 co oznacza symbol zastępczy zmiennoprzecinkową - 27 00:01:27,890 --> 00:01:31,680 przecinek C do wydrukowania Temperatura w stopniach Celsjusza. 28 00:01:31,680 --> 00:01:33,000 Ratujmy moja ostateczna. 29 00:01:33,000 --> 00:01:38,220 Skompilować z F do C. Uruchom program z dot slash F do C. 30 00:01:38,220 --> 00:01:39,940 >> I spróbujmy te wspólne temperatury. 31 00:01:39,940 --> 00:01:45,820 212 stopni w skali Fahrenheita wynosi 100 stopni Celsjusza. 32 00:01:45,820 --> 00:01:50,090 32 stopni w skali Fahrenheita jest W 0 stopni Celsjusza. 33 00:01:50,090 --> 00:01:54,240 >> Teraz pozwala udoskonalić ten program trochę nieco przez nie drukuje dość tyle 0-tych 34 00:01:54,240 --> 00:01:55,820 Po tym miejscu dziesiętnym. 35 00:01:55,820 --> 00:01:57,940 Aby to zrobić, będę wrócić do linii 11. 36 00:01:57,940 --> 00:02:03,430 I zamiast po prostu podać procent f, Zamierzam zamiast określić, powiedzmy, 37 00:02:03,430 --> 00:02:08,800 0,1 m, informując, że tylko druk f I chcesz wydrukować wartość zmiennoprzecinkową 38 00:02:08,800 --> 00:02:11,750 do jednej wartości po przecinku. 39 00:02:11,750 --> 00:02:13,630 >> Załóżmy ponownie zapisać mój program. 40 00:02:13,630 --> 00:02:19,680 Przekompilować go z make F do C. Następnie ponownie uruchomić go dot slash F do C i 41 00:02:19,680 --> 00:02:24,910 niech ponownie z, powiedzmy, 212, co daje mi 100,0. 42 00:02:24,910 --> 00:02:28,360 >> Teraz warto zauważyć, że zrobiłem coś bardzo świadomie w linii 9. 43 00:02:28,360 --> 00:02:35,830 Zauważ, jak napisałem 5 wynosi 5,0, 9 jako 9,0, a nawet 32 ​​jak 32,0. 44 00:02:35,830 --> 00:02:39,000 Cóż, pierwsze dwie z tych wartości były bardzo celowo, aby być 45 00:02:39,000 --> 00:02:42,200 Wartości zmiennoprzecinkowe, nie tylko dlatego, spójności z resztą 46 00:02:42,200 --> 00:02:42,940 z mojego programu - 47 00:02:42,940 --> 00:02:45,110 które wyraźnie dotyczą pływające Wartości punktowe - 48 00:02:45,110 --> 00:02:50,210 ale dlatego, że okazuje się, że C, Jeśli podzielić int innego int, 49 00:02:50,210 --> 00:02:54,350 Otrzymaną odpowiedź masz zamiar dostać się jest Sam int, nawet jeśli oznacza to 50 00:02:54,350 --> 00:02:57,450 konieczności wyrzucić wszystko po przecinku. 51 00:02:57,450 --> 00:03:04,990 >> Innymi słowy, jeśli zmienię to 5,0 do 5 lub to 9,0 do 9, a następnie ponownie zapisać 52 00:03:04,990 --> 00:03:10,550 mój program, ponownie skompilować z make F do C, , a następnie ponownie uruchomić go z kropka slash F 53 00:03:10,550 --> 00:03:15,310 do C i wpisz wejściem jak 212, zauważyć, że odpowiedź zamierzam 54 00:03:15,310 --> 00:03:17,860 się tym razem jest całkiem źle. 55 00:03:17,860 --> 00:03:23,570 0.0 nie jest prawidłowy poziom w Celsjusza w 212 ° C. 56 00:03:23,570 --> 00:03:24,500 >> Cóż, to, co się dzieje? 57 00:03:24,500 --> 00:03:29,410 Cóż, w linii 9, ponieważ 5 jest teraz całkowitego, ponieważ Fig. 9 jest teraz 58 00:03:29,410 --> 00:03:34,810 całkowita, wynikiem matematycznego należy 0,5555 i tak dalej. 59 00:03:34,810 --> 00:03:39,120 Ale dlatego, że wynik, zgodnie z Zasady C, w musi być int, że 60 00:03:39,120 --> 00:03:44,020 0,5555 zostanie wyrzucony, pozostawiając nam tylko 0. 61 00:03:44,020 --> 00:03:48,600 >> Więc w końcu, ja skończyć pomnożenie zupełnie przypadkowo 0 razy f minus 62 00:03:48,600 --> 00:03:52,830 32.0, który jest niezależnie zawsze da mi 0. 63 00:03:52,830 --> 00:03:56,930 Więc pamiętać, w dowolnym czasie za pomocą wartości zmiennoprzecinkowe w pobliżu 64 00:03:56,930 --> 00:03:59,860 ints, może nie koniecznie uzyskać odpowiedź, więc można się spodziewać. 65 00:03:59,860 --> 00:04:04,220 A więc zadbać, aby korzystać, tak jak w Wartości pierwszy przypadek, zmiennoprzecinkowe 66 00:04:04,220 --> 00:04:06,530 całej, aby uniknąć takich problemów. 67 00:04:06,530 --> 00:04:08,267