>> DAVID J. Malan: Si ju ndoshta e dini, temperaturat janë të matet duke përdorur
peshore të ndryshme në të ndryshme pjesët e botës.
Për shembull, 212 gradë Fahrenheit është 100 gradë Celsius dhe 32 gradë
Fahrenheit është 0 gradë Celsius.
Nuk do të jetë mirë në qoftë se kemi pasur një kompjuter program që na lejohet të
konvertohet nga, të themi, Fahrenheit për Celsius?
>> E pra, ne mund të shkruajmë atë program.
Le të parë të fillojë me përfshijnë cs50.h, kështu që ne mund të përdorim një funksion të quajtur
merrni noton, e cila, si get int, merr një Numri i nga përdoruesit, por këtë herë një
Numri pikë lundrues - një me një pikë dhjetore.
>> Le të përfshijë io.h standarde kështu që ne kemi qasje në
Funksionet si të shtypura f.
Dhe le të deklarojë kryesore në mënyrë të zakonshme.
>> Le të ardhshëm të menjëhershëm të përdoruesit për një temperaturë në Fahrenheit.
Le tani në të vërtetë të merrni atë temperaturën nga përdoruesit, së pari nga
deklaruar një ndryshore të quajtur f e tipit float.
Një noton, përsëri, do të thotë një ndryshore që ruan një vlerë lundrues pikë,
një me një pikë dhjetore.
>> Le të caktojë atë të kthimit Vlera e get noton.
Dhe pastaj le të bëjë një grimë e aritmetike në të, së pari duke deklaruar një tjetër noton
quajtur C për Celsius dhe dyqan në C rezultat i disa aritmetike të përbashkët.
5.0 ndahet nga 9,0 herë F minus 32.0.
>> Le tani të shtypur rezultat e kësaj llogaritje.
qind f -
duke nënkuptuar një placeholder për lundrues vlera pikë -
presje C për të shtypur jashtë temperatura në Celsius.
Le të shpëtojë finale time.
Të hartojë me F të C. Run programit me dot çaj F në C.
>> Dhe le të përpiqen ata të përbashkët Temperaturat.
212 gradë Fahrenheit në është 100 gradë Celsius.
32 gradë Fahrenheit në është 0 gradë Celsius në.
>> Tani lejon të përsosin këtë program pak bit duke mos shtypjen mjaft sa më shumë 0-së
pas atë vend dhjetore.
Për ta bërë këtë, unë jam duke shkuar për të të kthehemi në linjë 11.
Dhe në vend se vetëm të specifikojë qind f, Unë do të specifikojë në vend të kësaj, të themi,
0.1 f, informuar print f që unë vetëm dëshironi të printoni një vlerë lundrues pikë
në një vlerë pas vendin dhjetore.
>> Le të resave programin tim.
Përpiluar atë me make F për C. Pastaj përsëritje atë me dot çaj F për C. Dhe
le të provoni përsëri me, të themi, 212, e cila më jep 100.0.
>> Tani ia vlen të përmendet se kam bërë diçka shumë me qëllim në linjë 9.
Vini re se si kam shkruar 5 është 5.0, 9 si 9.0, dhe madje edhe 32 si 32.0.
E pra, dy të parët e këtyre vlerave ishin shumë të zgjedhur me qëllim që të jetë i
Vlerat pikë lundrues, jo vetëm për shkak se i konsistencës me pjesën tjetër
e programit tim -
të cilat qartë përfshin lundrues Vlerat pikë -
por për shkak se kjo rezulton se C, Nëse ndajnë një int nga një int,
rezultuar përgjigje që ju jeni do të merrni është në vetvete një int, edhe nëse kjo do të thotë
që ka për të hedhur larg çdo gjë pas presjes dhjetore.
>> Me fjalë të tjera, në qoftë se kam ndryshuar këtë 5.0 për 5 ose ky 9,0-9 dhe pastaj resave
programi im, përpiluar me make F në C, dhe pastaj ri-drejtuar atë me dot çaj F
në C dhe lloji në një input të si 212, vini re se përgjigja unë jam duke shkuar për të
merrni këtë herë është në të vërtetë mjaft i gabuar.
0.0 nuk është në shkallën korrekte Celsius Fahrenheit si 212.
>> E pra, çfarë po ndodh?
E pra, në përputhje 9, sepse 5 është tani një numër i plotë dhe për shkak se 9 është tani një
numër i plotë, rezultati matematikisht duhet të jetë 0,5555 dhe kështu me radhë.
Por sepse rezultati, sipas Rregullat C, duhet të jetë një int, që
0,5555 merr hedhur, na lënë me vetëm 0.
>> Pra, në fund, unë të përfundojë duke shumëzuar krejt rastësisht 0 koha f minus
32.0, e cila është pa marrë parasysh çfarë gjithmonë do të më jepni 0.
Kështu që i mbajnë në mend, në çdo kohë duke përdorur Vlerat pikë lundrues në afërsi të
Ints, ju nuk mund domosdoshmërisht të marrë përgjigje në mënyrë që ju presin.
Dhe kështu që të kujdeset për të përdorur, siç kam bërë në Vlerat rasti i parë, pika lundrues
të gjithë për të shmangur ndonjë çështje të tilla.