1 00:00:00,000 --> 00:00:02,360 >> DAVID เจลัน: ในขณะที่คุณอาจรู้ อุณหภูมิโดยการใช้ 2 00:00:02,360 --> 00:00:04,360 เครื่องชั่งที่แตกต่างกันในที่แตกต่างกัน ส่วนของโลก 3 00:00:04,360 --> 00:00:09,370 ตัวอย่างเช่น 212 องศาฟาเรนไฮต์เป็น 100 องศาเซลเซียสและ 32 องศา 4 00:00:09,370 --> 00:00:11,810 ฟาเรนไฮต์เป็น 0 องศาเซลเซียส 5 00:00:11,810 --> 00:00:14,230 มันจะไม่ดีถ้าเรามีคอมพิวเตอร์ โปรแกรมที่ช่วยให้เราสามารถ 6 00:00:14,230 --> 00:00:16,950 แปลงจากการพูดฟาเรนไฮต์ ที่จะเซลเซียส? 7 00:00:16,950 --> 00:00:18,510 >> ดีเราสามารถเขียนโปรแกรมที่ 8 00:00:18,510 --> 00:00:24,350 Let 's แรกเริ่มต้นด้วยการรวม cs50.h, เพื่อให้เราสามารถใช้ฟังก์ชั่นที่เรียกว่า 9 00:00:24,350 --> 00:00:28,610 ได้รับลอยที่เช่น int ได้รับได้รับ จำนวนจากผู้ใช้ แต่คราวนี้ 10 00:00:28,610 --> 00:00:31,440 จำนวนจุดลอย - หนึ่ง ด้วยจุดทศนิยม 11 00:00:31,440 --> 00:00:34,840 >> ลอง ได้แก่ io.h มาตรฐาน เพื่อให้เราสามารถเข้าถึง 12 00:00:34,840 --> 00:00:36,230 การทำงานเช่นการพิมพ์ฉ 13 00:00:36,230 --> 00:00:40,000 และขอยังประกาศหลัก ในทางปกติ 14 00:00:40,000 --> 00:00:42,675 >> ขอแจ้งให้ผู้ใช้ต่อไปสำหรับ อุณหภูมิในฟาเรนไฮต์ 15 00:00:42,675 --> 00:00:46,050 16 00:00:46,050 --> 00:00:49,220 ตอนนี้ขอให้ได้รับจริงอุณหภูมิที่ จากผู้ใช้ครั้งแรกโดย 17 00:00:49,220 --> 00:00:52,910 ประกาศตัวแปรที่เรียกว่า f ของประเภทลอย 18 00:00:52,910 --> 00:00:56,750 ลอยอีกครั้งหมายถึงตัวแปรที่ เก็บค่าจุดลอย 19 00:00:56,750 --> 00:00:58,200 หนึ่งที่มีจุดทศนิยม 20 00:00:58,200 --> 00:01:01,780 >> ให้กำหนดผลตอบแทน ค่าของที่ได้รับลอย 21 00:01:01,780 --> 00:01:06,080 แล้วให้ทำบิตของคณิตศาสตร์ มันเป็นครั้งแรกที่ประกาศลอยอื่น 22 00:01:06,080 --> 00:01:11,690 ที่เรียกว่าเซลเซียสเซลเซียสและเก็บใน C ผลของบางอย่างทางคณิตศาสตร์ทั่วไป 23 00:01:11,690 --> 00:01:19,060 5.0 หารด้วย 9.0 ครั้งลบ F 32.0 24 00:01:19,060 --> 00:01:23,440 >> ตอนนี้ขอพิมพ์ผล การคำนวณนี้ 25 00:01:23,440 --> 00:01:24,730 ร้อยละฉ - 26 00:01:24,730 --> 00:01:27,890 แสดงถึงตัวยึดสำหรับ ค่าลอยจุด - 27 00:01:27,890 --> 00:01:31,680 จุลภาค C เพื่อพิมพ์ออกมา อุณหภูมิในเซลเซียส 28 00:01:31,680 --> 00:01:33,000 ขอบันทึกครั้งสุดท้ายของฉัน 29 00:01:33,000 --> 00:01:38,220 คอมไพล์ด้วย F ถึง C. เรียกโปรแกรม ด้วย F เฉือนจุดซี 30 00:01:38,220 --> 00:01:39,940 >> และให้พยายามร่วมกันที่ อุณหภูมิ 31 00:01:39,940 --> 00:01:45,820 212 องศาฟาเรนไฮต์ใน 100 องศาเซลเซียส 32 00:01:45,820 --> 00:01:50,090 32 องศาฟาเรนไฮต์ในเป็น 0 องศาเซลเซียสใน 33 00:01:50,090 --> 00:01:54,240 >> ตอนนี้ให้ปรับแต่งโปรแกรมนี้เพียงเล็กน้อย บิตโดยไม่พิมพ์ค่อนข้างมาก 0 34 00:01:54,240 --> 00:01:55,820 หลังจากที่ทศนิยมที่ 35 00:01:55,820 --> 00:01:57,940 การทำเช่นนี้ฉันจะไป กลับไปที่เส้น 11 36 00:01:57,940 --> 00:02:03,430 และมากกว่าเพียงแค่ระบุร้อยละฉ, ฉันจะระบุแทนการพูด 37 00:02:03,430 --> 00:02:08,800 0.1 ฉแจ้งฉพิมพ์ที่ฉันเท่านั้น ต้องการพิมพ์ค่าจุดลอย 38 00:02:08,800 --> 00:02:11,750 หนึ่งหลังจากค่าทศนิยม 39 00:02:11,750 --> 00:02:13,630 >> ขอบันทึกโปรแกรมของฉัน 40 00:02:13,630 --> 00:02:19,680 คอมไพล์ด้วยทำให้ F ถึง C. แล้ว วิ่งด้วย F เฉือนจุดที่ซีและ 41 00:02:19,680 --> 00:02:24,910 ให้ลองใหม่อีกครั้งกับกล่าวว่า 212, ซึ่งทำให้ผม 100.0 42 00:02:24,910 --> 00:02:28,360 >> ตอนนี้มันเป็นมูลค่า noting ที่ผมทำ อะไรบางอย่างที่จงใจในสาย 9 43 00:02:28,360 --> 00:02:35,830 แจ้งให้ทราบว่าผมเขียน 5 5.0, 9 เป็น 9.0 และแม้แต่ 32 เป็น 32.0 44 00:02:35,830 --> 00:02:39,000 ดีแรกที่สองของค่าเหล่านั้น มากจงใจเลือกที่จะเป็น 45 00:02:39,000 --> 00:02:42,200 ค่าจุดลอยไม่เพียงเพราะ ของความสอดคล้องกับส่วนที่เหลือ 46 00:02:42,200 --> 00:02:42,940 ของโปรแกรมของฉัน - 47 00:02:42,940 --> 00:02:45,110 ซึ่งเห็นได้ชัดว่าเกี่ยวข้องกับการลอย ค่าจุด - 48 00:02:45,110 --> 00:02:50,210 แต่เพราะมันจะเปิดออกซีว่าถ้าคุณ แบ่ง int โดย int อื่น 49 00:02:50,210 --> 00:02:54,350 คำตอบที่ทำให้คุณจะได้รับคือ int ตัวเองแม้ว่าที่หมายถึง 50 00:02:54,350 --> 00:02:57,450 ต้องทิ้งทุกอย่าง หลังจุดทศนิยม 51 00:02:57,450 --> 00:03:04,990 >> ในคำอื่น ๆ ถ้าผมเปลี่ยนไปนี้ 5.0 5 หรือนี้ 9.0-9 แล้วบันทึก 52 00:03:04,990 --> 00:03:10,550 โปรแกรมของฉันคอมไพล์ด้วยทำให้ F ถึงซี แล้วกลับใช้มันด้วยจุดเฉือน F 53 00:03:10,550 --> 00:03:15,310 ที่ C และประเภทในการป้อนข้อมูลเช่น 212, แจ้งให้ทราบว่าคำตอบที่ฉันกำลังจะไป 54 00:03:15,310 --> 00:03:17,860 ได้รับในครั้งนี้เป็นจริงที่ไม่ถูกต้องมาก 55 00:03:17,860 --> 00:03:23,570 0.0 ไม่ได้เป็นระดับที่ถูกต้องใน 212 องศาเซลเซียสเป็นฟาเรนไฮต์ 56 00:03:23,570 --> 00:03:24,500 >> ดีสิ่งที่เกิดขึ้น 57 00:03:24,500 --> 00:03:29,410 ทั้งในสาย 9, 5 เพราะตอนนี้ก็คือ จำนวนเต็มและเนื่องจาก 9 ขณะนี้ 58 00:03:29,410 --> 00:03:34,810 จำนวนเต็มผลทางคณิตศาสตร์ ควรจะเป็น 0.5555 และอื่น ๆ 59 00:03:34,810 --> 00:03:39,120 แต่เนื่องจากผลตาม กฎซี, จะต้องมี int ที่ 60 00:03:39,120 --> 00:03:44,020 .5555 ได้รับการโยนทิ้งไป ออกจากเรามีเพียง 0 61 00:03:44,020 --> 00:03:48,600 >> ดังนั้นในท้ายที่สุดฉันท้ายคูณ ค่อนข้างตั้งใจ 0 ครั้งฉลบ 62 00:03:48,600 --> 00:03:52,830 32.0 ซึ่งเป็นไม่ว่าสิ่งที่ เสมอไปให้ฉัน 0 63 00:03:52,830 --> 00:03:56,930 จึงเก็บไว้ในใจตลอดเวลาโดยใช้ ค่าจุดที่ลอยอยู่ในความใกล้ชิดของ 64 00:03:56,930 --> 00:03:59,860 ints คุณอาจไม่จำเป็นต้อง เพื่อให้ได้คำตอบที่คุณคาดหวัง 65 00:03:59,860 --> 00:04:04,220 และเพื่อดูแลการใช้งานที่ผมทำใน ค่ากรณีแรก, จุดลอย 66 00:04:04,220 --> 00:04:06,530 ตลอดทั้งเพื่อหลีกเลี่ยงปัญหาดังกล่าว 67 00:04:06,530 --> 00:04:08,267