>> DAVID J. Malan: Com vostè probablement sap, les temperatures es mesuren utilitzant
diferents escales en diferents parts del món.
Per exemple, 212 graus Fahrenheit és 100 graus centígrads i 32 graus
Fahrenheit és de 0 graus Celsius.
No seria bo si tinguéssim un ordinador programa que ens va permetre
convertir de, diguem, Fahrenheit a Celsius?
>> Bé, podem escriure el programa.
Primer anem a començar amb incloure cs50.h, pel que podem utilitzar una funció anomenada
aconseguir flotador, que igual que get int, obté un nombre de l'usuari, però aquesta vegada un
nombre de punt flotant - una amb un punt decimal.
>> Suposem també inclouen io.h estàndard perquè tinguem accés a
funcions com la impressió f.
I també anem a declarar principal en la forma habitual.
>> Anem proper demanar a l'usuari una temperatura en graus Fahrenheit.
Ara anem a aconseguir realment que la temperatura des de l'usuari, per primera
declara una variable anomenada f de tipus float.
Un flotador, de nou, el que significa una variable que emmagatzema un valor de punt flotant,
un amb un punt decimal.
>> Anem a assignar-li el retorn valor get flotador.
I després farem una mica d'aritmètica en ella, primer es declara un altre flotador
anomenat C per Celsius i emmagatzemar a la C resultat d'una mica d'aritmètica comú.
5.0 dividit per 9,0 vegades F menys 32,0.
>> Ara anem a imprimir el resultat d'aquest càlcul.
cent f -
el que significa un marcador de posició per valor de coma flotant -
coma C a imprimir la temperatura en graus Celsius.
Anem a guardar el meu final.
Compilació amb F a C. Executar el programa amb el punt de tala F a C.
>> I anem a tractar dels comuns temperatures.
212 graus en Fahrenheit és 100 graus Celsius.
32 graus a Fahrenheit és 0 graus en Celsius.
>> Ara anem a refinar aquest programa una mica poc a no impressió bastant com molts de 0
després d'aquesta xifra decimal.
Per a això, vaig a tornar a la línia 11.
I en lloc d'especificar per cent f, Vaig a especificar en el seu lloc, per exemple,
0.1 f, f impressió informant que només vol imprimir un valor de coma flotant
en un valor després del punt decimal.
>> Anem a tornar a guardar el meu programa.
Torneu a compilar amb make F a C. Llavors executeu-lo novament amb el punt slash F a C.
anem a reintentar amb, per exemple, 212, el que em dóna 100,0.
>> Ara val la pena assenyalar que vaig fer cosa molt deliberadament a la línia 9.
Observeu com vaig escriure 5 és 5,0, 9 com 9.0, i fins a 32 com 32,0.
Bé, els dos primers d'aquests valors eren molt deliberadament escollit per ser
valors de punt flotant, no només perquè de coherència amb la resta
del meu programa -
que implica clarament flotant valors de punt -
sinó perquè resulta que C, Si dividir un enter per un altre int, el
resposta que resulta que vas a aconseguir és sí un int, fins i tot si això significa
haver de llençar tot després del punt decimal.
>> En altres paraules, si canvi això de 5,0 a 5 o aquest 9,0-9 i després tornar a guardar
el meu programa, torneu a compilar amb maquillatge F a C, i després tornar a executar-lo amb slash dot F
a C i escriu una entrada de com 212, adonar que la resposta que vaig a
aconseguir aquest temps és en realitat bastant malament.
0,0 no és el correcte grau de Celsius com Fahrenheit 212.
>> Bé, què està passant?
Doncs bé, en la línia 9, perquè 5 és ara una sencer i perquè 9 és ara un
sencer, el resultat matemàticament ha de ser 0,5555 i així successivament.
Però com que el resultat, segons Regles de C, ha de ser un int, que
0,5555 es llença, deixant-nos amb només 0.
>> Així que al final, m'acaben de multiplicar bastant accidentalment 0 vegades f menys
32.0, que és sense importar el Sempre em donarà 0.
Així que tingui en compte, en qualsevol moment fent servir valors de punt flotant en la proximitat de
ints, potser no necessàriament obtenir la resposta pel que espera.
I així que vagi amb compte d'utilitzar, com ho vaig fer en el valors primer cas, en coma flotant
al llarg per evitar qualsevol tipus de problemes.