DAVID J. MALAN: Som du sikkert vet, temperaturen måles ulike skalaer i forskjellige deler av verden. For eksempel, er 212 grader Fahrenheit 100 grader Celsius og 32 grader Fahrenheit er 0 grader Celsius. Ville det ikke vært fint om vi hadde en datamaskin program som tillater oss å konvertere fra, sier Fahrenheit til Celsius? Vel, kan vi skrive det programmet. La oss først starte med inkluderer cs50.h, slik at vi kan bruke en funksjon kalt få flyte, som i likhet med get int, får en tall fra brukeren, men denne gangen en flyttall - en med en desimal. La oss også omfatte standard io.h slik at vi har tilgang til funksjoner som print f. Og la oss også erklære hoved på vanlig måte. La oss neste be brukeren om en temperatur i Fahrenheit. La oss nå faktisk får den temperaturen fra brukeren, først ved erklære en variabel kalt f av type float. En flottør, igjen, noe som betyr en variabel som lagrer et flyttall, en med en desimal. La oss gi den avkastningen Verdien av get float. Og så la oss gjøre et lite regnestykke på det, først erklære en annen float kalt C for Celsius og butikk i C Resultatet av noen felles aritmetikk. 5,0 delt på 9,0 ganger F minus 32,0. La oss nå skrive ut resultatet av denne beregning. prosent f - betegner en plassholder for flyttall - komma C for å skrive ut temperaturen i Celsius. La oss redde mitt endelige. Kompilere med F til C. Kjør programmet med dot slash F til C. Og la oss prøve de vanlige temperaturer. 212 grader i Fahrenheit 100 grader Celsius. 32 grader i Fahrenheit er 0 grader i Celsius. Nå kan avgrense dette programmet litt litt ved å ikke skrive ut ganske så mange 0-er etter at desimal. For å gjøre dette, kommer jeg til å går tilbake til linje 11. Og i stedet for å bare spesifisere prosent f, Jeg kommer til å beskrive nærmere, sier, 0,1 f, informere print f at jeg bare ønsker å skrive ut et flyttall til en verdi etter desimal. La oss resave mitt program. Rekompilere det med make F til C. Deretter kjør den med dot slash F til C. Og la oss prøve på nytt med, si, 212, som gir meg 100,0. Nå er det verdt å merke seg at jeg gjorde noe veldig bevisst på linje 9. Legg merke til hvordan jeg skrev 5 er 5,0, 9 som 9.0, og til og med 32 som 32,0. Vel, de to første av disse verdiene var veldig bevisst valgt å være flyt verdier, ikke bare fordi av konsistens med resten av mitt program - som klart innebærer flytende punkt verdier - men fordi det viser seg at C, hvis du dele en int av en annen int, den resulterer svaret du kommer til å få er selv en int, selv om det betyr å måtte kaste bort alt etter desimaltegnet. Med andre ord, hvis jeg endrer dette 5,0 til 5 or dette 9,0 til 9, og lagre deretter mitt program, rekompilere med make F til C, og deretter kjøre den med dot slash F til C og skriv inn en inngang på som 212, legge merke til at svaret jeg kommer til å får denne gangen er faktisk ganske galt. 0,0 er ikke den riktige grad i Celsius som 212 Fahrenheit. Vel, hva er det som skjer? Vel, på linje 9, fordi 5 er nå en heltall og fordi 9 er nå en heltall, resultatet matematisk bør være 0,5555 og så videre. Men fordi resultatet ifølge C regler, må være en int, som 0,5555 blir kastet bort, forlate oss med bare 0. Så til slutt, ender jeg opp med å multiplisere ganske uhell 0 ganger f minus 32,0, som er uansett hva alltid kommer til å gi meg 0. Så husk, helst ved hjelp av flyt verdier i nærhet av ints, kanskje du ikke nødvendigvis få svar, slik du forventer. Og så passe på å bruke, som jeg gjorde i første tilfellet, flyttall verdier gjennom å unngå slike problemer.