>> DAVID J. Malan: Jak asi víte, Teplota se měří pomocí
různé váhy v různých částech světa.
Například, 212 stupňů Fahrenheita je 100 stupňů Celsia a 32 stupňů
Fahrenheit je 0 stupňů Celsia.
Nebylo by hezké, kdyby jsme měli počítač program, který nám umožnil
převést z, řekněme, Fahrenheit na Celsia?
>> No, můžeme napsat, že program.
Pojďme si nejprve začít s zahrnují cs50.h, takže můžeme použít funkci nazvanou
se plovák, který, stejně jako get int, dostane Číslo od uživatele, ale tentokrát
číslo s plovoucí desetinnou čárkou - jeden s desetinnou čárkou.
>> Pojďme také obsahovat standardní io.h tak, že máme přístup k
funkce, jako je tisk f..
A pojďme také deklarovat hlavní obvyklým způsobem.
>> Pojďme vedle vyzve uživatele k teplota ve stupních Fahrenheita.
Pojďme se skutečně dostat, že teplota od uživatele, nejprve
deklarovat proměnnou s názvem f typu float.
Float, znovu, což znamená proměnnou, která Ukládá plovoucí bodovou hodnotu,
jeden s desetinnou čárkou.
>> Pojďme přiřadit mu návrat hodnota get plováku.
A pak se pojďme udělat trochu aritmetiky na to, nejprve deklarovat další float
s názvem C pro Celsia a obchod v C výsledek nějakého společného aritmetiky.
5,0 děleno 9,0 násobku F minus 32,0.
>> Pojďme se nyní vytisknout výsledek tohoto výpočtu.
procent f -
znamenat zástupný symbol pro plovoucí bodová hodnota -
čárka C vytisknout teplota ve stupních Celsia.
Pojďme zachránit finále.
Kompilace s F až C. Spusťte program s dot lomítkem F na ° C.
>> A zkusme ty běžné teploty.
212 stupňů Fahrenheita je 100 stupňů Celsia.
32 stupňů ve stupních Fahrenheita je 0 stupňů Celsia v.
>> Nyní vám umožní vylepšit tento program málo bit tím, že tiskne docela tolik 0'S
po tomto desetinné místo.
Chcete-li to provést, budu zpět na řádek 11.
A spíše než stačí zadat procent f, Jdu na místo určit, řekněme,
0,1 f, informuje tisková f, že jsem jen Chcete-li tisknout plovoucí bodovou hodnotu
na jedné hodnoty po desetinné místo.
>> Pojďme znovu uložit svůj program.
Překompilovat s make F na ° C. Pak znovu ji tečka lomítko F na ° C. A
pojďme zkusit s, řekněme, 212, který mi dává 100,0.
>> Nyní je třeba poznamenat, že jsem to udělal něco velmi záměrně v řádku 9.
Všimněte si, jak jsem napsal 5 je 5,0, 9 jako 9,0, a dokonce i 32 jako 32,0.
No, první dva z těchto hodnot byly velmi záměrně vybrány tak, aby
s plovoucí desetinnou čárkou hodnoty, a to nejen proto, že konzistence s ostatními
z mého programu -
což jasně zahrnuje plovoucí bodové hodnoty -
ale proto, že se ukáže, že C, Pokud rozdělit int jiným int,
Výsledná odpověď budete si je sám int, i když to znamená
museli vyhodit vše za desetinnou čárkou.
>> Jinými slovy, když změním to 5,0 až 5 nebo toto 9,0-9 a poté znovu uložit
můj program, překompilovat s make F na C, a poté znovu spustit ji tečka lomítko F
na C a typu v na vstupu, jako je 212, Všimněte si, že odpověď budu
se tato doba je vlastně docela špatně.
0.0 není správný stupeň v Celsia jako 212 stupňů Fahrenheita.
>> No, co se děje?
Tak, v souladu 9, protože 5 je nyní celé číslo, a proto, že 9 je nyní
celé číslo, výsledek matematicky by mělo být 0,5555 a tak dále.
Ale protože výsledek, v souladu s Pravidla C je, musí být int, že
0,5555 dostane vyhodit, takže nás jen 0.
>> Takže nakonec skončím vynásobením zcela náhodně 0 krát f minus
32.0, která je bez ohledu na to, jaké vždycky mi dát 0..
Takže se mějte na paměti, kdykoliv pomocí hodnoty s plovoucí desetinnou čárkou v blízkosti
ints, nemusí nutně dostanete odpověď, takže můžete očekávat.
A tak se postarat o to, využít, jak jsem to udělal v První případ, s pohyblivou řádovou čárkou hodnoty
po celou dobu nedošlo k žádné takové problémy.