1 00:00:00,000 --> 00:00:02,360 >> Давид Ј. Малан: Као што вероватно знате, температуре се мери помоћу 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 Фаренхајт је 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 Хајде да прво почнемо са обухватају цс50.х, тако да можемо да користимо функцију која се зове 9 00:00:24,350 --> 00:00:28,610 добити пловак, који, као и гет инт, добија број од корисника, али овај пут 10 00:00:28,610 --> 00:00:31,440 флоатинг поинт број - један са децимални зарез. 11 00:00:31,440 --> 00:00:34,840 >> Хајде да такође укључују стандардне ио.х тако да имамо приступ 12 00:00:34,840 --> 00:00:36,230 Функције као што су штампање ф. 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 Плутају, опет, значи да променљиву складишти у покретном зарезу вредности, 19 00:00:56,750 --> 00:00:58,200 један са децимални зарез. 20 00:00:58,200 --> 00:01:01,780 >> Хајде да га доделите повратак вредност гет пловка. 21 00:01:01,780 --> 00:01:06,080 И онда хајде да урадимо мало аритметике на њему, прво изјављујући други пловак 22 00:01:06,080 --> 00:01:11,690 позвао Ц за Целзијуса и продавницу у Ц резултат неког заједничког аритметике. 23 00:01:11,690 --> 00:01:19,060 5.0 подељен 9.0 пута Ф минус 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 зарез Ц да одштампате температура у Целзијуса. 28 00:01:31,680 --> 00:01:33,000 Хајде да спасим финале. 29 00:01:33,000 --> 00:01:38,220 Цомпиле са Ф до Ц. покрените програм са дот сласх Ф до Ц. 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 Компајлирате га са маке Ф до Ц. Онда реприза је са дот сласх Ф до Ц и 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 али зато се испоставља да је Ц, ако поделити инт другог инт, 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 мој програм, рекомпајлирате са маке Ф до Ц, а затим га поново покренути са дот сласх Ф 53 00:03:10,550 --> 00:03:15,310 на Ц и типу на улазу у као 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 Али пошто резултат, према Правила Ц, има да буде инт, који 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