>> Давид Ј. Малан: Као што вероватно знате, температуре се мери помоћу
различите скале за различите деловима света.
На пример, 212 степени Целзијуса је 100 степени Целзијуса и 32 степени
Фаренхајт је 0 степени Целзијуса.
Зар не би било лепо да смо имали компјутер Програм који нам је омогућио да се
цонверт из, рецимо, Фаренхајт да Целзијуса?
>> Па, можемо написати тај програм.
Хајде да прво почнемо са обухватају цс50.х, тако да можемо да користимо функцију која се зове
добити пловак, који, као и гет инт, добија број од корисника, али овај пут
флоатинг поинт број - један са децимални зарез.
>> Хајде да такође укључују стандардне ио.х тако да имамо приступ
Функције као што су штампање ф.
И да такође прогласе главни на уобичајени начин.
>> Хајде да следећи питати корисника за температура у Целзијуса.
Хајде да сада заиста добити ту температуру од корисника, прво
проглашења променљиву зове Ф типа флоат.
Плутају, опет, значи да променљиву складишти у покретном зарезу вредности,
један са децимални зарез.
>> Хајде да га доделите повратак вредност гет пловка.
И онда хајде да урадимо мало аритметике на њему, прво изјављујући други пловак
позвао Ц за Целзијуса и продавницу у Ц резултат неког заједничког аритметике.
5.0 подељен 9.0 пута Ф минус 32.0.
>> Хајде да сада одштампате резултат овог рачунања.
одсто Ф -
означава чувара места за флоатинг поинт вредност -
зарез Ц да одштампате температура у Целзијуса.
Хајде да спасим финале.
Цомпиле са Ф до Ц. покрените програм са дот сласх Ф до Ц.
>> И хајде да покушамо оне уобичајене температуре.
212 степени у Фаренхајт је 100 степени Целзијуса.
32 степени у Фаренхајт је 0 степени Целзијуса у.
>> Сада омогућава рефине овај програм мало Мало по не баш онолико штампањем 0'С
после тог децимална места.
Да бисте то урадили, ја ћу да вратимо на линији 11.
И уместо да само наведете одсто ф, Идем да уместо тога одредите, рецимо,
0,1 м, информисање штампа ф да сам само Желим да одштампате у покретном зарезу вредност
на једној вредности након децимална места.
>> Хајде да поново сачувате свој програм.
Компајлирате га са маке Ф до Ц. Онда реприза је са дот сласх Ф до Ц и
хајде да поново покушати са, рецимо, 212, који ми даје 100,0.
>> Сада је напоменути да јесам нешто врло намерно у линији 9.
Обратите пажњу како сам написао 5 је 5,0, 9 као 9.0, па чак и 32 као 32.0.
Па, прва два од тих вредности су врло намерно изабран да буде
вредности у покретном зарезу, не само зато конзистентности са остатком
мог програма -
што јасно укључује плутајуће Вредности тачка -
али зато се испоставља да је Ц, ако поделити инт другог инт,
Добијени одговор ћеш добити је Сама инт, чак и ако то значи
потребе да се баци све после децималног зареза.
>> Другим речима, ако променим овај 5.0 на 5 или то 9.0 до 9 и затим поново сачувате
мој програм, рекомпајлирате са маке Ф до Ц, а затим га поново покренути са дот сласх Ф
на Ц и типу на улазу у као 212, приметити да одговор ћу
се овог пута је заправо сасвим погрешно.
0.0 није тачан степен у Целзијус као 212 Фаренхајта.
>> Па, шта се дешава?
Па, у реду 9, јер је сада 5 цео број и зато је сада 9
цео број, резултат математички треба да буде 0.5555 и тако даље.
Али пошто резултат, према Правила Ц, има да буде инт, који
0.5555 бива бачен далеко, остављајући нас са само 0.
>> Дакле, на крају, сам завршити множењем сасвим случајно 0 пута ф минус
32.0, што је без обзира Увек ће ми дати 0..
Дакле, имајте на уму, сваки пут користећи флоатинг поинт вредности у близини
интс, ти не би нужно добити одговор тако што очекујете.
И тако се побринути да користе, као што сам учинио у вредности први случај, Флоатинг Поинт
широм да се избегне било таквих питања.