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ų.