David J. Malan Soos u waarskynlik weet, temperature word gemeet verskillende skale in verskillende dele van die wêreld. Byvoorbeeld, 212 grade Celsius is 100 grade Celsius en 32 grade Fahrenheit is 0 grade Celsius. Sou dit nie lekker wees as ons 'n rekenaar program wat ons toegelaat om te omskep van, sê, Fahrenheit na Celsius? Wel, kan ons die program te skryf. Kom ons kyk eers begin met sluit cs50.h, sodat ons kan 'n funksie genoem gebruik kry vlot, wat, soos get int, kry 'n aantal van die gebruiker nie, maar hierdie keer 'n swaai punt nommer - een met 'n desimale punt. Kom ons sluit ook standaard io.h sodat ons toegang het tot funksies soos druk f. En laat verklaar ook hoof in die gewone manier. Kom ons langs die gebruiker vra vir 'n temperatuur in Fahrenheit. Kom ons nou eintlik kry dat die temperatuur van die gebruiker, eers deur waarby 'n veranderlike genoem f van die tipe float. 'N vlot, weer, wat beteken dat 'n veranderlike wat slaan 'n drywende punt waarde, een met 'n desimale punt. Kom ons gee dit die terugkeer waarde van get float. En dan kom ons doen 'n bietjie van rekenkundige op dit, die eerste van nog float genoem C vir Celsius en die winkel in C die gevolg van 'n paar algemene rekenkundige. 5.0 gedeel deur 9,0 keer F minus 32.0. Kom ons nou druk die resultaat van hierdie berekening. persent f - dui 'n plekhouer vir swaai punt waarde - komma C te druk om die temperatuur in Celsius. Kom ons red my finaal. Stel met F aan C. die program met dot streep F aan C. En laat ons probeer om die algemene temperature. 212 grade Celsius in is 100 grade Celsius. 32 grade Celsius in is 0 grade Celsius. Nou kan 'n bietjie te verfyn hierdie program bietjie deur nie die druk heeltemal so baie 0 se nadat desimale plek. Om dit te doen, gaan ek gaan terug na lyn 11. En eerder as om net spesifiseer persent f, Ek gaan om te plaas spesifiseer, sê, 0.1 f, in te lig druk f dat ek net wil 'n drywende punt waarde te druk na 'n waarde na die desimale plek. Kom ons weer stoor my program. Heropstel met make F aan C. Dan tik dit met dot streep F aan C. En laat se weer probeer met, sê, 212, Dit gee my 100,0. Nou is dit die moeite werd om daarop te let dat ek gedoen het iets baie doelbewus in reël 9. Let op hoe ek geskryf het 5 is 5.0, 9 as 9.0, en selfs 32 as 32,0. Wel, die eerste twee van daardie waardes was baie doelbewus gekies te word swaai punt waardes, nie net omdat van konsekwentheid met die res van my program - wat duidelik behels swaai punt waardes - maar omdat dit blyk dat C, As jy deel 'n int deur 'n ander int, die gevolg antwoord wat jy gaan kry is self 'n int, selfs as dit beteken om weg te gooi alles na die desimale punt. Met ander woorde, as ek dit verander 5.0 te 5 of hierdie 9,0-9 en daarna op my program, heropstel met make F C, en dan weer uit te voer met dot streep F tot C en tik in 'n bydrae van soos 212, sien dat die antwoord wat ek gaan Kry hierdie tyd is eintlik heeltemal verkeerd. 0.0 nie die regte graad in Celsius as 212 Fahrenheit. Wel, wat gaan aan? Wel, in reël 9, want 5 is nou 'n integer en omdat 9 is nou 'n integer, is die resultaat wiskundig moet 0,5555 en so aan. Maar omdat die resultaat, volgens C se reëls, het 'n int te wees, wat 0,5555 kry weggegooi, verlaat ons met net 0. So op die ou end, het ek uiteindelik vermenigvuldig nogal per ongeluk 0 keer f minus 32,0, wat maak nie saak wat altyd gaan gee my 0. So moenie in gedagte hou, enige tyd gebruik swaai punt waardes in die nabyheid van ints, kan jy nie noodwendig kry die antwoord so jy verwag. En so sorg te gebruik, soos ek gedoen het in die eerste geval, swaai punt waardes Dwarsdeur enige sodanige probleme te voorkom.