DAVID J. Malan: Zoals u waarschijnlijk weet, temperaturen worden gemeten met verschillende schalen in verschillende delen van de wereld. Bijvoorbeeld, 212 graden Fahrenheit is 100 graden Celsius en 32 graden Fahrenheit is 0 graden Celsius. Zou het niet mooi zijn als we een computer programma dat ons in staat gesteld converteren van, zeg, Fahrenheit Celsius? Nou, we kunnen dat programma te schrijven. Laten we eerst beginnen met onder meer cs50.h, zodat we een functie genaamd gebruiken krijgen vlotter, die net als get int, krijgt een nummer van de gebruiker, maar dit keer een floating point nummer - een met een decimale punt. Laten we ook standaard io.H zodat we toegang hebben tot functies zoals print f. En laten we ook verklaren belangrijkste op de gebruikelijke wijze. Laten we het volgende wordt de gebruiker gevraagd een temperatuur in Fahrenheit. Laten we nu eigenlijk krijgen die temperatuur van de gebruiker, eerst door waarbij een variabele met de naam f van het type float. Een vlotter, wederom betekent een variabele die slaat een floating point waarde, een met een komma. Laten we het toewijzen de terugkeer waarde van get float. En dan gaan we een beetje van de rekenkunde op het, eerst verklaren andere float riep C voor Celsius en op te slaan in C de gevolg van een aantal gemeenschappelijke rekenkunde. 5,0 gedeeld door 9,0 maal F minus 32,0. Laten we nu het resultaat af te drukken van deze berekening. procent f - betekenende een tijdelijke aanduiding voor floating point waarde - komma C om uit te printen de temperatuur in graden Celsius. Laten we redden mijn laatste. Compileren met F naar C. Run het programma met dot slash F naar C. En laten we proberen deze gemeenschappelijke temperaturen. 212 graden Fahrenheit 100 graden Celsius. 32 graden in Fahrenheit is 0 graden Celsius. Laten we nu verfijnen dit programma een beetje beetje door niet af te drukken zo veel 0's daarna decimaal. Om dit te doen, ga ik ga terug naar lijn 11. En in plaats van alleen procent f specificeren, Ik ga in plaats daarvan op te geven, laten we zeggen, 0.1 f, informeren afdruk f dat ik alleen willen een floating point waarde afdrukken een waarde achter de komma. Laten we opnieuw opslaan mijn programma. Opnieuw compileren met make F naar C. Dan start het opnieuw op met dot slash F naar C. En laten we opnieuw proberen met, zeg, 212, die geeft mij 100,0. Nu is het vermeldenswaard dat ik deed iets heel bewust in lijn 9. Merk op hoe ik schreef 5 is 5,0, 9 als 9.0, en zelfs 32 als 32.0. Welnu, de eerste twee van deze waarden werden heel bewust gekozen om floating point waarden, niet alleen omdat van de samenhang met de rest van mijn programma - die duidelijk betrekking hebben zwevende punt waarden - maar omdat het blijkt dat C, Als je delen een int int door een andere, de resulterende antwoord je gaat krijgen is zelf een int, zelfs als dat betekent hoeven weg te gooien alles achter de komma. Met andere woorden, als ik veranderen deze 5,0 tot 5 of dit 9,0-9 en vervolgens opnieuw opslaan mijn programma, opnieuw te compileren met make F naar C, en vervolgens opnieuw uit te voeren met dot slash F naar C en typ in een ingang van zoals 212, merken dat het antwoord dat ik ga krijgen deze tijd is eigenlijk heel verkeerd. 0.0 is niet de juiste diploma in Celsius als Fahrenheit 212. Nou, wat is er gaande? Nou, in lijn 9, want 5 is nu een integer en omdat 9 is nu een integer, het resultaat mathematisch moet 0,5555 enzovoort. Maar omdat het resultaat volgens C-regels, moet een int, dat 0,5555 wordt weggegooid, waardoor we met slechts 0. Dus in het einde, ik uiteindelijk te vermenigvuldigen heel toevallig 0 keer f minus 32.0, dat is wat er ook gebeurt altijd naar mij 0. Dus in gedachten houden, op elk moment met behulp van floating point waarden in de nabijheid van ints, zou je niet per se krijgt het antwoord, zodat je verwachten. En zo zorgen om te gebruiken, zoals ik deed in de eerste geval, floating point waarden gedurende om dergelijke problemen te voorkomen.