>> DAVID J. Malan: Както вероятно знаете, температури са измерени като се използва
различни мащаби в различни части на света.
Например, 212 градуса по Фаренхайт е 100 градуса по Целзий и 32 градуса
Fahrenheit е 0 градуса по Целзий.
Не би ли било хубаво, ако имахме компютър програма, която ни позволи да
конвертирате от, да речем, по Фаренхайт да Целзий?
>> Е, можем да напишем тази програма.
Нека първо да започнем с включва cs50.h, така че ние можем да използваме функция, наречена
получите поплавък, който, като GET ПНА, получава брой от потребителя, но този път
плаваща запетая - един с десетична запетая.
>> Нека също така да включва стандартен io.h така че ние имаме достъп до
функции като печат F.
И нека да обяви главната по обичайния начин.
>> Нека следващия напомни на потребителя за температура по Фаренхайт.
Нека сега се получи в действителност тази температура от потребителя, за първи път от
за обявяване на променлива, наречена е от тип плувка.
A плувка, отново, което означава, променлива, която съхранява стойност с плаваща запетая,
една с десетична запетая.
>> Нека си го присвои връщането стойност на GET плувка.
И след това нека да направим малко аритметика върху него, първо се декларира друга плувка
наречен C за Целзий и се съхранява в C на резултат на някакъв общ аритметика.
5.0 разделено на 9,0 пъти F минус 32.0.
>> Нека сега отпечатате резултата на това изчисление.
процента е -
което означава контейнер за стойност с плаваща запетая -
запетая C да разпечатате температура в градуси по Целзий.
Да спасим последната ми.
Съставете с F до C. Run програмата с точка наклонена черта F до C.
>> И нека да се опитаме тези общи температури.
212 градуса по Фаренхайт е 100 градуса по Целзий.
32 градуса по Фаренхайт е 0 градуса по Целзий.
>> Сега да се усъвършенства тази програма малко малко от не печата толкова много на 0
след този знак след десетичната запетая.
За да направите това, аз отивам да се върна в ред 11.
И вместо само да уточним процента е, Отивам да се уточни, вместо, да речем,
0.1 е, информиране печат е, че аз само искате да отпечатате стойност с плаваща запетая
до една стойност след десетичната запетая.
>> Нека да запишете отново моята програма.
Го компилирате с марка F до C. След това това изпълнете отново с точка наклонена черта F до C. И
нека да опитате отново с, да речем, 212, което ми дава 100.0.
>> Сега тя е да се отбележи, че го направих нещо много съзнателно в линия 9.
Забележете как съм написал 5 е 5.0, 9 като 9.0, и дори 32 като 32.0.
Е, първите две от тези стойности са много съзнателно избрана да бъде
стойности с плаваща запетая, а не само защото на съгласуваност с останалите
на моята програма -
което ясно включва плаващ точкови стойности -
но тъй като се оказва, че C, Ако разделят един от друг Int Int, на
Полученият отговор вие ще получите е Самата едно цяло число, дори ако това означава
се налага да изхвърлите всичко след десетичната запетая.
>> С други думи, ако мога да променя този 5.0 до 5 или този 9.0 до 9 и след това запазете
моята програма, компилирате с марка F до C, и след това да го пуснете отново с точка наклонена черта F
до C и тип в един вход на като 212, забележите, че отговорът Отивам да
се този път е доста погрешно.
0.0 не е в правилната степен Целзий като 212 по Фаренхайт.
>> Е, какво става?
Е, в линия 9, тъй като 5 сега е число и защото 9 сега е
цяло число, резултатът математически трябва да бъде 0,5555 и така нататък.
Но тъй като в резултат на това, според Правила от C, трябва да бъде едно цяло число, че
0.5555 получава изхвърля, ни оставя само с 0.
>> Така че в края на краищата, аз в крайна сметка се умножи съвсем случайно 0 пъти е минус
32.0, което е без значение какво винаги ще ми даде 0.
Така че имайте предвид, по всяко време, използвайки стойности с плаваща запетая в близост
цели числа, може да не е задължително получите отговор, така че очакваме.
И така, да се грижи за използване, тъй като, което направих в първият случай, с плаваща запетая стойности
цялата да се избегнат всякакви такива въпроси.