>> Дејвид Џ MALAN: Како што веројатно знаете, температури се измерени користење
различни нивоа во различни делови на светот.
На пример, 212 степени Фаренхајтови е 100 Целзиусови степени и 32 степени
Фаренхајтови е 0 степени целзиусови.
Зарем не би било убаво доколку би имале компјутер програма со која ни овозможи да
конвертирате од, да речеме, Фаренхајтови да целзиусови?
>> Па, ние може да напише таа програма.
Ајде прво да почне со вклучуваат cs50.h, така што можеме да го користиме функција наречена
добие плови, која, како GET int, добива број од корисникот, но овој пат на
број со подвижна запирка - една со децимална точка.
>> Да, исто така вклучуваат стандардни io.h така што ние имаме пристап до
функции како печати ѓ.
И ајде, исто така, прогласи главниот на вообичаениот начин.
>> Ајде следната извести корисникот за температура во Фаренхајтови.
Ајде сега всушност се дека температурата од корисникот, прва од страна на
прогласување на променлива наречена ѓ на пливка.
Носете, повторно, што значи варијабла која продавници децимален број,
еден со децимална точка.
>> Ајде да се додели на враќање вредност на Get плови.
А потоа нека се направи малку на аритметиката на неа, прво прогласување уште плови
наречен C за Целзиусови и продавница во С резултат на некои заеднички аритметика.
5.0 поделено со 9,0 пати F минус 32,0.
>> Ајде сега печати резултатот на оваа пресметка.
проценти f -
означува случаеви за подвижна запирка вредност -
запирка C за печатење на температура во Целзиусови.
Ајде да ја спаси мојата конечна.
Компајлира со F до В стартувате програмата со точка црта F до В
>> И ајде да се обидеме оние заеднички температури.
212 степени во Фаренхајтови е 100 степени целзиусови.
32 степени во целзиусови е 0 степени во целзиусови.
>> Сега ти овозможува да насочите оваа програма е малку малку со тоа што не печатење толку многу 0 е
после тоа децимално место.
Да го направите ова, ќе одам да се се врати на линија 11.
И наместо само наведете проценти ѓ, Одам да наместо наведете, да речеме,
0,1 ѓ, информирање печати ѓ дека јас само сакате да печатите децимален број
на една вредност по децимално место.
>> Ајде resave мојата програма.
Прекомпајлирате со марка F до C. Потоа повторување со точка црта F до В И
ајде да се обидете повторно со, да речеме, 212, што ми дава 100,0.
>> Сега тоа е вреди да се напомене дека јас не нешто многу намерно во согласност 9.
Информации како сум го напишала 5 е 5,0, 9 како 9,0, па дури и 32, како 32,0.
Па, првите две од оние вредности се многу намерно избран да биде
подвижна запирка вредности, не само поради на конзистентност со останатите
на мојата програма -
кои јасно вклучува подвижна точка вредности -
туку затоа што се испоставува дека C, Ако подели на int од друг int, на
резултира одговор ви се случува да се добие е самата int, дури и ако тоа значи дека
морале да фрлаат се што по децималната точка.
>> Со други зборови, ако го сменам ова 5.0 до 5 или овој 9,0-9 а потоа resave
мојата програма, повторно компајлирајте со марка F до С, и потоа повторно да се кандидира со точка црта F
на C и тип во внесување на како 212, забележите дека одговорот јас ќе одам да
се овој пат е всушност сосема погрешно.
0.0 не е точниот степен во Целзиусови како 212 целзиусови.
>> Па, што се случува?
Па, во алинеја 9, затоа што 5 е сега број и поради 9 сега е
цел број, резултатот математички треба да биде 0,5555 и така натаму.
Туку затоа што резултат, според Правила на C, мора да биде цел број, што
0,5555 добива фрлени, оставајќи ни со само 0.
>> Па на крајот, јас се заокружи множење сосема случајно 0 пати ѓ минус
32,0, што е, без разлика што секогаш ќе ми даде 0.
Па имајте на ум, во секое време со користење подвижна запирка вредности во близината на
ints, можеби нема да мора да го добиете одговорот, па можете да очекувате.
И така се грижи да се користи, како што го направив во првиот случај, со подвижна запирка вредности
во текот да се избегне било каква прашања.