David J. MALAN: Habang ikaw ay marahil alam, temperatura ay nasusukat sa paggamit iba't ibang mga antas sa iba't-ibang bahagi ng mundo. Halimbawa, 212 degree Fahrenheit ay 100 grado na Celsius at 32 degrees Fahrenheit ay 0 grado na Celsius. Gusto hindi ito gandang kung nagkaroon kami ng computer programa na nagpahintulot sa amin upang convert mula sa, sabihin nating, Fahrenheit sa Celsius? Well, maaari naming magsulat ng programang iyon. Ng unang magsimula sa magsama cs50.h Hayaan, sa gayon ay maaari kaming gumamit ng isang function na tinatawag na makakuha ng float, na kung saan, tulad ng get int, ay nakakuha ng numero mula sa user, ngunit ang oras na ito ng isang numero ng lumulutang na tuldok - isa may isang decimal point. Hayaan Kasama rin ni standard io.h nang sa gayon ay magkaroon kami ng access sa mga pag-andar tulad ng naka-print na f. At din magpahayag ng pangunahing hayaan sa karaniwang paraan. I-prompt ng susunod user para sa Hayaan isang temperatura sa Fahrenheit. Sabihin ngayon talagang makakuha ng temperatura na mula sa gumagamit, una sa pamamagitan ng deklarasyon ng variable na tinatawag na f ng uri ng float. Ang isang float, muli, ibig sabihin ay isang variable na nag-iimbak ng mga lumulutang na halaga punto, ang isa ay may isang decimal point. Magtalaga ng ito ang balik Hayaan halaga ng get float. At pagkatapos, hayaang gawin ng isang bit ng palatuusan sa ito, deklarasyon unang isa pang float na tinatawag na C para sa Celsius at iimbak sa C ang resulta ng ilang mga karaniwang palatuusan. 5.0 na hinati sa pamamagitan ng 9.0 beses F minus 32.0. Hayaan ngayong mag-print ng mga resulta ng pagtutuos na ito. porsiyento f - signifying isang placeholder para sa lumulutang na halaga punto - kuwit C upang i-print ang temperatura sa Celsius. I-save ang aking panghuling Hayaan. Sumulat ng libro na may F upang C. Run sa programa may tuldok na slash F upang C. At Subukan nating mga karaniwang ipaalam temperatura. 212 degrees sa Fahrenheit ay 100 grado na Celsius. 32 degrees sa Fahrenheit ay 0 degrees sa Celsius. Hinahayaan Ngayon pinuhin ang programang ito ng kaunti bit sa pamamagitan ng hindi pag-print ng masyadong maraming bilang 0 ni pagkatapos na decimal na lugar. Upang gawin ito, ako pagpunta sa bumalik sa linya 11. At sa halip na tukuyin lamang porsyento f, Pupunta ako sa halip tukuyin, sabihin nating, 0.1 f, na nagpapaalam sa f-print na lang ako nais na mag-print ng mga lumulutang na halaga punto sa isang halaga pagkatapos ng decimal lugar. Ni resave aking programa Hayaan. Mag-recompile ito na may make F upang C. Pagkatapos muling patakbuhin ito sa tuldok slash F upang C. At ni retry sa, sabihin nating, 212 hayaan, kung saan ay nagbibigay sa akin 100.0. Ngayon ay nagkakahalaga ng noting na ginawa ko isang bagay na napaka sadyang sa linya 9. Pansinin kung paano ko na sinulat 5 ay 5.0, 9 bilang 9.0, at kahit 32 bilang 32.0. Well, ang unang dalawa sa mga halagang iyon ay napaka sadyang pinili upang maging mga halaga ng mga lumulutang na tuldok, hindi lang dahil ng pagsunod sa mga natitira ng aking mga programa - kung saan malinaw na nagsasangkot ng mga lumulutang mga halaga ng point - ngunit dahil ito ay lumiliko out na C, Kung ikaw hatiin ang isang int sa pamamagitan ng isa pang int, ang na nagreresulta sagot na iyong pagpunta upang makakuha ng ay ang sarili nito sa isang int, kahit na paraan na pagkakaroon upang itapon ang lahat ng bagay pagkatapos ng decimal point. Sa madaling salita, kung binago ko ito sa 5.0 5 o ito 9.0-9 at pagkatapos resave ang aking mga programa, mag-recompile may make F upang C, at pagkatapos ay muling i-run ito sa tuldok slash F sa C at uri sa isang input ng tulad ng 212, mapapansin na ang kasagutan pupuntahan ko makakuha ng mga oras na ito ay aktwal na medyo mali. 0.0 ay hindi ang tamang degree sa Celsius bilang 212 Farenheit. Well, ano kaya ang nangyari? Well, sa linya 9, dahil 5 na ngayon ang isang integer at dahil 9 na ngayon ang isang integer, ang resulta sa mathematically Dapat na 0.5555 at iba pa. Ngunit dahil sa resulta, ayon sa Panuntunan C, na may na maging isang int, na 0.5555 ay makakakuha ng itinapon ang layo, Aalis sa amin na may 0 lang. Kaya sa katapusan, napupunta ako multiply medyo aksidenteng 0 beses f minus 32.0, na kahit na ano palaging pagpunta sa akong bigyan 0. Kaya huwag tandaan, anumang oras gamit mga halaga ng mga lumulutang na tuldok sa proximity ng ints, hindi mo puwede kinakailangan makuha ang sagot kaya inaasahan. At kaya mag-ingat upang gamitin, tulad ng ginawa ko sa mga halaga ng unang kaso, lumulutang na tuldok sa buong upang maiwasan ang anumang naturang mga isyu.