>> DAVID J. MALAN: Som du sikkert ved, temperaturer måles ved hjælp af
forskellige skalaer i forskellige dele af verden.
For eksempel 212 grader Fahrenheit er 100 grader Celsius og 32 grader
Fahrenheit er 0 grader Celsius.
Ville det ikke være rart, hvis vi havde en computer program, der tillod os at
konvertere fra, siger, Fahrenheit Celsius?
>> Nå, kan vi skrive dette program.
Lad os først starte med omfatter cs50.h, så vi kan bruge en funktion kaldet
få float, der ligesom get int, får en tal fra brugeren, men denne gang en
decimaltal - en med et komma.
>> Lad os også standard io.h så vi har adgang til
funktioner som print F.
Og lad os også erklære main på den sædvanlige måde.
>> Lad os næste bede brugeren om en temperatur i Fahrenheit.
Lad os nu rent faktisk får denne temperatur fra brugeren, først ved
erklære en variabel kaldet f af typen float.
En flyder igen, hvilket betyder en variabel, gemmer en floating point-værdi
den ene med en decimal.
>> Lad os tildele den afkastet værdien af ​​get flyde.
Og så lad os gøre en smule aritmetik på det, først at bekendtgøre en anden float
kaldet C Celsius og butik i C resultat af en fælles aritmetik.
5.0 divideret med 9,0 gange F minus 32,0.
>> Lad os nu udskrive resultatet i denne beregning.
procent f -
signalerer en pladsholder for decimaltalsværdi -
komma C for at udskrive temperatur i Celsius.
Lad os gemme mit sidste.
Kompilere med F til C. Kør programmet med dot skråstreg F til C.
>> Og lad os prøve dem fælles temperaturer.
212 grader i Fahrenheit er 100 grader Celsius.
32 grader i Fahrenheit er 0 grader i Celsius.
>> Nu lader forfine dette program lidt bit ved ikke at udskrive helt så mange 0'er
efter denne decimal.
For at gøre dette, vil jeg gå tilbage til linie 11.
Og snarere end blot angive procent f, Jeg har tænkt mig at i stedet angive, siger,
0,1 f, informere print f, at jeg kun vil udskrive et kommatalsværdi
til en værdi efter decimal.
>> Lad os gem mit program.
Genkompilere det med make F til C. Derefter gentages det med prik skråstreg F til C. Og
lad os prøve igen med, siger, 212, som giver mig 100,0.
>> Nu er det værd at bemærke, at jeg gjorde noget meget bevidst på linie 9.
Læg mærke til hvordan jeg skrev 5 er 5,0, 9 som 9,0, og selv 32 som 32,0.
Nå, de to første af disse værdier var meget bevidst valgt at være
floating point-værdier, ikke bare fordi sammenhængen med resten
af mit program -
som klart indebærer flydende punktværdier -
men fordi det viser sig, at C, hvis du opdele en int anden int, den
resulterende svar, du kommer til at få, er selv en int, selvom det betyder,
skulle smide alt efter kommaet.
>> Med andre ord, hvis jeg ændre dette 5.0 til 5 eller denne 9,0-9 og derefter gemme
mit program, rekompilere med make F til C, og derefter køre det med prik skråstreg F
til C og skriv en indgang ligesom 212, bemærke, at det svar, jeg har tænkt mig at
får denne gang er faktisk helt forkert.
0.0 ikke er den korrekte grad i Celsius 212 Fahrenheit.
>> Nå, hvad sker der?
Tja, i linje 9, fordi 5 er nu en heltal og fordi 9 er nu en
heltal, resultatet matematisk skal være 0,5555 og så videre.
Men fordi resultatet ifølge C regler, skal være en int, at
0,5555 bliver smidt væk, forlader os med kun 0.
>> Så i sidste ende, ender jeg multiplicere helt tilfældigt 0 gange f minus
32,0, hvilket er uanset hvad altid kommer til at give mig 0.
Så du skal huske på, når som helst ved hjælp af floating point-værdier i nærheden af
ints, du måske ikke nødvendigvis få svaret, så du forventer.
Og så sørge for at bruge, som jeg gjorde i første tilfælde kommeværdier
hele til at undgå sådanne problemer.