DAVID เจลัน: ในขณะที่คุณอาจรู้ อุณหภูมิโดยการใช้ เครื่องชั่งที่แตกต่างกันในที่แตกต่างกัน ส่วนของโลก ตัวอย่างเช่น 212 องศาฟาเรนไฮต์เป็น 100 องศาเซลเซียสและ 32 องศา ฟาเรนไฮต์เป็น 0 องศาเซลเซียส มันจะไม่ดีถ้าเรามีคอมพิวเตอร์ โปรแกรมที่ช่วยให้เราสามารถ แปลงจากการพูดฟาเรนไฮต์ ที่จะเซลเซียส? ดีเราสามารถเขียนโปรแกรมที่ Let 's แรกเริ่มต้นด้วยการรวม cs50.h, เพื่อให้เราสามารถใช้ฟังก์ชั่นที่เรียกว่า ได้รับลอยที่เช่น int ได้รับได้รับ จำนวนจากผู้ใช้ แต่คราวนี้ จำนวนจุดลอย - หนึ่ง ด้วยจุดทศนิยม ลอง ได้แก่ io.h มาตรฐาน เพื่อให้เราสามารถเข้าถึง การทำงานเช่นการพิมพ์ฉ และขอยังประกาศหลัก ในทางปกติ ขอแจ้งให้ผู้ใช้ต่อไปสำหรับ อุณหภูมิในฟาเรนไฮต์ ตอนนี้ขอให้ได้รับจริงอุณหภูมิที่ จากผู้ใช้ครั้งแรกโดย ประกาศตัวแปรที่เรียกว่า f ของประเภทลอย ลอยอีกครั้งหมายถึงตัวแปรที่ เก็บค่าจุดลอย หนึ่งที่มีจุดทศนิยม ให้กำหนดผลตอบแทน ค่าของที่ได้รับลอย แล้วให้ทำบิตของคณิตศาสตร์ มันเป็นครั้งแรกที่ประกาศลอยอื่น ที่เรียกว่าเซลเซียสเซลเซียสและเก็บใน C ผลของบางอย่างทางคณิตศาสตร์ทั่วไป 5.0 หารด้วย 9.0 ครั้งลบ F 32.0 ตอนนี้ขอพิมพ์ผล การคำนวณนี้ ร้อยละฉ - แสดงถึงตัวยึดสำหรับ ค่าลอยจุด - จุลภาค C เพื่อพิมพ์ออกมา อุณหภูมิในเซลเซียส ขอบันทึกครั้งสุดท้ายของฉัน คอมไพล์ด้วย F ถึง C. เรียกโปรแกรม ด้วย F เฉือนจุดซี และให้พยายามร่วมกันที่ อุณหภูมิ 212 องศาฟาเรนไฮต์ใน 100 องศาเซลเซียส 32 องศาฟาเรนไฮต์ในเป็น 0 องศาเซลเซียสใน ตอนนี้ให้ปรับแต่งโปรแกรมนี้เพียงเล็กน้อย บิตโดยไม่พิมพ์ค่อนข้างมาก 0 หลังจากที่ทศนิยมที่ การทำเช่นนี้ฉันจะไป กลับไปที่เส้น 11 และมากกว่าเพียงแค่ระบุร้อยละฉ, ฉันจะระบุแทนการพูด 0.1 ฉแจ้งฉพิมพ์ที่ฉันเท่านั้น ต้องการพิมพ์ค่าจุดลอย หนึ่งหลังจากค่าทศนิยม ขอบันทึกโปรแกรมของฉัน คอมไพล์ด้วยทำให้ F ถึง C. แล้ว วิ่งด้วย F เฉือนจุดที่ซีและ ให้ลองใหม่อีกครั้งกับกล่าวว่า 212, ซึ่งทำให้ผม 100.0 ตอนนี้มันเป็นมูลค่า noting ที่ผมทำ อะไรบางอย่างที่จงใจในสาย 9 แจ้งให้ทราบว่าผมเขียน 5 5.0, 9 เป็น 9.0 และแม้แต่ 32 เป็น 32.0 ดีแรกที่สองของค่าเหล่านั้น มากจงใจเลือกที่จะเป็น ค่าจุดลอยไม่เพียงเพราะ ของความสอดคล้องกับส่วนที่เหลือ ของโปรแกรมของฉัน - ซึ่งเห็นได้ชัดว่าเกี่ยวข้องกับการลอย ค่าจุด - แต่เพราะมันจะเปิดออกซีว่าถ้าคุณ แบ่ง int โดย int อื่น คำตอบที่ทำให้คุณจะได้รับคือ int ตัวเองแม้ว่าที่หมายถึง ต้องทิ้งทุกอย่าง หลังจุดทศนิยม ในคำอื่น ๆ ถ้าผมเปลี่ยนไปนี้ 5.0 5 หรือนี้ 9.0-9 แล้วบันทึก โปรแกรมของฉันคอมไพล์ด้วยทำให้ F ถึงซี แล้วกลับใช้มันด้วยจุดเฉือน F ที่ C และประเภทในการป้อนข้อมูลเช่น 212, แจ้งให้ทราบว่าคำตอบที่ฉันกำลังจะไป ได้รับในครั้งนี้เป็นจริงที่ไม่ถูกต้องมาก 0.0 ไม่ได้เป็นระดับที่ถูกต้องใน 212 องศาเซลเซียสเป็นฟาเรนไฮต์ ดีสิ่งที่เกิดขึ้น ทั้งในสาย 9, 5 เพราะตอนนี้ก็คือ จำนวนเต็มและเนื่องจาก 9 ขณะนี้ จำนวนเต็มผลทางคณิตศาสตร์ ควรจะเป็น 0.5555 และอื่น ๆ แต่เนื่องจากผลตาม กฎซี, จะต้องมี int ที่ .5555 ได้รับการโยนทิ้งไป ออกจากเรามีเพียง 0 ดังนั้นในท้ายที่สุดฉันท้ายคูณ ค่อนข้างตั้งใจ 0 ครั้งฉลบ 32.0 ซึ่งเป็นไม่ว่าสิ่งที่ เสมอไปให้ฉัน 0 จึงเก็บไว้ในใจตลอดเวลาโดยใช้ ค่าจุดที่ลอยอยู่ในความใกล้ชิดของ ints คุณอาจไม่จำเป็นต้อง เพื่อให้ได้คำตอบที่คุณคาดหวัง และเพื่อดูแลการใช้งานที่ผมทำใน ค่ากรณีแรก, จุดลอย ตลอดทั้งเพื่อหลีกเลี่ยงปัญหาดังกล่าว