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