>> David J. Malan: Kaip jūs turbūt žinote, temperatūra matuojama naudojant
skirtingi masteliai skiriasi pasaulio dalyse.
Pavyzdžiui, 212 laipsnių pagal Celsijų yra 100 laipsnių Celsijaus ir 32 laipsnių
Farenheito yra 0 laipsnių Celsijaus.
Ar nebūtų puiku, jei mes turėjome kompiuterį programa, kuri leido mums
paversti, tarkim, Farenheito į Celsijaus?
>> Na, mes galime parašyti, kad programą.
Tegul pirmasis pradėti įtraukti cs50.h, todėl, kad mes galime naudoti funkciją, vadinamą
gauti plūdę, kuri, kaip get int, gauna skaičius nuo vartotojo, bet šį kartą
slankiojo kablelio skaičius - vienas su kablelio.
>> Leiskite taip pat standartinę io.h kad mes turime prieigą prie
funkcijas, pavyzdžiui, spausdinimo f.
Ir tegul deklaruoja Pagrindinis įprastu būdu.
>> Tegul šalia paskatinti vartotoją Farenheito temperatūros.
Tegul dabar faktiškai gauti tą temperatūrą iš vartotojo, pirmiausia
deklaruojant kintamąjį vadinamą f tipo plūdės.
Plūdės, vėl, o tai reiškia, kad kintamasis saugo slankiojo kablelio,
vienas su kablelio.
>> Leiskite priskirti jai grąžą vertė get plūdės.
Ir tada darykime aritmetinio tiek ant jo, pirmasis skelbiantis vieną plūdę
vadinamas C temperatūrai ir laikykite C rezultatas tam tikru bendru aritmetika.
5,0 padalinta 9,0 karto F minus 32,0.
>> Tegul dabar pats spausdinti rezultatas Šio apskaičiavimo.
procentų f -
reiškiantis už rezervuotą vietą slankiojo kablelio vertė -
kablelis C spausdinti temperatūrą Celsijaus.
Išsaugokime savo finalą.
Sudaryti su F į C Run programos dot slash F iki C
>> Ir pabandykime yra tos pačios temperatūra.
212 laipsnių pagal Celsijų yra 100 laipsnių Celsijaus.
32 laipsnių pagal Celsijų yra 0 laipsnių Celsijaus.
>> Dabar leidžia patobulinti šią programą mažai tiek ne spausdinti gana daug 0-ųjų
po to kablelio.
Norėdami tai padaryti, aš ruošiuosi grįžti į eilutę 11.
Ir, o ne tik nurodyti procentų f, Aš ruošiuosi vietoj nurodyti, tarkim,
0,1 f, informuoti spausdinimo f, kad aš tik norite spausdinti slankiojo kablelio
į vieną reikšmę po kablelio.
>> Leiskite išsaugokite savo programą.
Perkompiliuoti jį su make F iki C. Tada pakartotas su dot slash F į C And
tegul bandykite dar kartą su, tarkim, 212, kuris suteikia man 100,0.
>> Dabar verta paminėti, kad aš kažkas labai sąmoningai vadovaujantis 9.
Atkreipkite dėmesį, kaip aš parašiau 5 yra 5,0, 9 kaip 9,0, ir net 32 ​​kaip 32,0.
Na, pirmieji du iš šių reikšmių buvo labai sąmoningai pasirinko būti
slankiojo kablelio reikšmės, o ne tik todėl, kad nuoseklumo su likusiu
mano programa -
kuris aiškiai apima kintamų taško verčių -
bet todėl, it turns out, kad C, Jei padalinti int kitos int,
todėl atsakymas, kad jūs ketinate gauti yra pati int, net jei tai reiškia,
atsižvelgdamas išmesti viską po kablelio.
>> Kitaip tariant, jei aš pakeisti šį 5,0 iki 5 ar tai 9,0-9 ir tada išsaugokite
mano programa, perkompiliuoti su make F iki C ir tada iš naujo paleisti jį su dot slash F
C ir tipo RCA tipo kaip 212, pastebėsite, kad atsakymas, kurį aš ruošiuosi
gauti šį kartą iš tiesų yra gana negerai.
0,0 nėra teisinga laipsnis Celsijaus kaip 212 Farenheito.
>> Na, kas čia vyksta?
Na, pagal 9, nes 5 yra dabar sveikasis skaičius ir dėl 9 dabar
sveikasis skaičius, rezultatas matematiškai turėtų būti 0,5555 ir pan.
Bet kadangi rezultatas, atsižvelgiant į C "taisyklės, turi būti int, kad
0,5555 gauna išmesti, o mums tik su 0.
>> Taigi, galų gale, aš galų gale dauginant visai netyčia 0 kartų f minuso
32,0, tai nesvarbu, kas visada bus man 0.
Taigi reikia nepamiršti, bet kuriuo metu, naudojant slankiojo kablelio reikšmės arti
ints, galbūt nebūtinai gauti atsakymą, todėl jūs tikėtis.
Ir todėl rūpintis naudoti, kaip dariau Pirmuoju atveju, slankiojo kablelio reikšmės
visoje išvengti tokių problemų.