1 00:00:00,000 --> 00:00:02,360 >> DAVID J. Malan: Както вероятно знаете, температури са измерени като се използва 2 00:00:02,360 --> 00:00:04,360 различни мащаби в различни части на света. 3 00:00:04,360 --> 00:00:09,370 Например, 212 градуса по Фаренхайт е 100 градуса по Целзий и 32 градуса 4 00:00:09,370 --> 00:00:11,810 Fahrenheit е 0 градуса по Целзий. 5 00:00:11,810 --> 00:00:14,230 Не би ли било хубаво, ако имахме компютър програма, която ни позволи да 6 00:00:14,230 --> 00:00:16,950 конвертирате от, да речем, по Фаренхайт да Целзий? 7 00:00:16,950 --> 00:00:18,510 >> Е, можем да напишем тази програма. 8 00:00:18,510 --> 00:00:24,350 Нека първо да започнем с включва cs50.h, така че ние можем да използваме функция, наречена 9 00:00:24,350 --> 00:00:28,610 получите поплавък, който, като GET ПНА, получава брой от потребителя, но този път 10 00:00:28,610 --> 00:00:31,440 плаваща запетая - един с десетична запетая. 11 00:00:31,440 --> 00:00:34,840 >> Нека също така да включва стандартен io.h така че ние имаме достъп до 12 00:00:34,840 --> 00:00:36,230 функции като печат F. 13 00:00:36,230 --> 00:00:40,000 И нека да обяви главната по обичайния начин. 14 00:00:40,000 --> 00:00:42,675 >> Нека следващия напомни на потребителя за температура по Фаренхайт. 15 00:00:42,675 --> 00:00:46,050 16 00:00:46,050 --> 00:00:49,220 Нека сега се получи в действителност тази температура от потребителя, за първи път от 17 00:00:49,220 --> 00:00:52,910 за обявяване на променлива, наречена е от тип плувка. 18 00:00:52,910 --> 00:00:56,750 A плувка, отново, което означава, променлива, която съхранява стойност с плаваща запетая, 19 00:00:56,750 --> 00:00:58,200 една с десетична запетая. 20 00:00:58,200 --> 00:01:01,780 >> Нека си го присвои връщането стойност на GET плувка. 21 00:01:01,780 --> 00:01:06,080 И след това нека да направим малко аритметика върху него, първо се декларира друга плувка 22 00:01:06,080 --> 00:01:11,690 наречен C за Целзий и се съхранява в C на резултат на някакъв общ аритметика. 23 00:01:11,690 --> 00:01:19,060 5.0 разделено на 9,0 пъти F минус 32.0. 24 00:01:19,060 --> 00:01:23,440 >> Нека сега отпечатате резултата на това изчисление. 25 00:01:23,440 --> 00:01:24,730 процента е - 26 00:01:24,730 --> 00:01:27,890 което означава контейнер за стойност с плаваща запетая - 27 00:01:27,890 --> 00:01:31,680 запетая C да разпечатате температура в градуси по Целзий. 28 00:01:31,680 --> 00:01:33,000 Да спасим последната ми. 29 00:01:33,000 --> 00:01:38,220 Съставете с F до C. Run програмата с точка наклонена черта F до C. 30 00:01:38,220 --> 00:01:39,940 >> И нека да се опитаме тези общи температури. 31 00:01:39,940 --> 00:01:45,820 212 градуса по Фаренхайт е 100 градуса по Целзий. 32 00:01:45,820 --> 00:01:50,090 32 градуса по Фаренхайт е 0 градуса по Целзий. 33 00:01:50,090 --> 00:01:54,240 >> Сега да се усъвършенства тази програма малко малко от не печата толкова много на 0 34 00:01:54,240 --> 00:01:55,820 след този знак след десетичната запетая. 35 00:01:55,820 --> 00:01:57,940 За да направите това, аз отивам да се върна в ред 11. 36 00:01:57,940 --> 00:02:03,430 И вместо само да уточним процента е, Отивам да се уточни, вместо, да речем, 37 00:02:03,430 --> 00:02:08,800 0.1 е, информиране печат е, че аз само искате да отпечатате стойност с плаваща запетая 38 00:02:08,800 --> 00:02:11,750 до една стойност след десетичната запетая. 39 00:02:11,750 --> 00:02:13,630 >> Нека да запишете отново моята програма. 40 00:02:13,630 --> 00:02:19,680 Го компилирате с марка F до C. След това това изпълнете отново с точка наклонена черта F до C. И 41 00:02:19,680 --> 00:02:24,910 нека да опитате отново с, да речем, 212, което ми дава 100.0. 42 00:02:24,910 --> 00:02:28,360 >> Сега тя е да се отбележи, че го направих нещо много съзнателно в линия 9. 43 00:02:28,360 --> 00:02:35,830 Забележете как съм написал 5 е 5.0, 9 като 9.0, и дори 32 като 32.0. 44 00:02:35,830 --> 00:02:39,000 Е, първите две от тези стойности са много съзнателно избрана да бъде 45 00:02:39,000 --> 00:02:42,200 стойности с плаваща запетая, а не само защото на съгласуваност с останалите 46 00:02:42,200 --> 00:02:42,940 на моята програма - 47 00:02:42,940 --> 00:02:45,110 което ясно включва плаващ точкови стойности - 48 00:02:45,110 --> 00:02:50,210 но тъй като се оказва, че C, Ако разделят един от друг Int Int, на 49 00:02:50,210 --> 00:02:54,350 Полученият отговор вие ще получите е Самата едно цяло число, дори ако това означава 50 00:02:54,350 --> 00:02:57,450 се налага да изхвърлите всичко след десетичната запетая. 51 00:02:57,450 --> 00:03:04,990 >> С други думи, ако мога да променя този 5.0 до 5 или този 9.0 до 9 и след това запазете 52 00:03:04,990 --> 00:03:10,550 моята програма, компилирате с марка F до C, и след това да го пуснете отново с точка наклонена черта F 53 00:03:10,550 --> 00:03:15,310 до C и тип в един вход на като 212, забележите, че отговорът Отивам да 54 00:03:15,310 --> 00:03:17,860 се този път е доста погрешно. 55 00:03:17,860 --> 00:03:23,570 0.0 не е в правилната степен Целзий като 212 по Фаренхайт. 56 00:03:23,570 --> 00:03:24,500 >> Е, какво става? 57 00:03:24,500 --> 00:03:29,410 Е, в линия 9, тъй като 5 сега е число и защото 9 сега е 58 00:03:29,410 --> 00:03:34,810 цяло число, резултатът математически трябва да бъде 0,5555 и така нататък. 59 00:03:34,810 --> 00:03:39,120 Но тъй като в резултат на това, според Правила от C, трябва да бъде едно цяло число, че 60 00:03:39,120 --> 00:03:44,020 0.5555 получава изхвърля, ни оставя само с 0. 61 00:03:44,020 --> 00:03:48,600 >> Така че в края на краищата, аз в крайна сметка се умножи съвсем случайно 0 пъти е минус 62 00:03:48,600 --> 00:03:52,830 32.0, което е без значение какво винаги ще ми даде 0. 63 00:03:52,830 --> 00:03:56,930 Така че имайте предвид, по всяко време, използвайки стойности с плаваща запетая в близост 64 00:03:56,930 --> 00:03:59,860 цели числа, може да не е задължително получите отговор, така че очакваме. 65 00:03:59,860 --> 00:04:04,220 И така, да се грижи за използване, тъй като, което направих в първият случай, с плаваща запетая стойности 66 00:04:04,220 --> 00:04:06,530 цялата да се избегнат всякакви такива въпроси. 67 00:04:06,530 --> 00:04:08,267