1 00:00:00,000 --> 00:00:00,310 2 00:00:00,310 --> 00:00:01,750 >> DAVID ลัน: ตอนนี้ขอให้พัดใจของคุณ 3 00:00:01,750 --> 00:00:06,500 มันจะเปิดออกในโลกแห่งความเป็นจริงที่ 1 แบ่งออก 10 ย่อมเป็น 1/10 หรือ 0.1 4 00:00:06,500 --> 00:00:10,370 แต่ในคอมพิวเตอร์ที่มีเพียง จำกัด จำนวนบิตที่จะ 5 00:00:10,370 --> 00:00:14,290 แทนตัวเลขคุณไม่สามารถเสมอ เป็นตัวแทนของตัวเลขเช่น 1/10 ด้วย 6 00:00:14,290 --> 00:00:15,500 ความแม่นยำที่สมบูรณ์แบบ 7 00:00:15,500 --> 00:00:18,640 ในคำอื่น ๆ คอมพิวเตอร์บางครั้งอาจมี ที่จะทำให้สายการตัดสินและไม่ได้ 8 00:00:18,640 --> 00:00:22,740 จำเป็นต้องแสดงหมายเลขที่คุณ ต้องการเป็นอย่างแม่นยำตามที่ต้องการ 9 00:00:22,740 --> 00:00:27,020 >> ตัวอย่างเช่นสมมติว่าฉันกลับไปเป็น โปรแกรมนี้และเปลี่ยน 0.1, 10 00:00:27,020 --> 00:00:32,073 โอ้ 0.28 จึงแสดงให้เห็นว่า ฉันต้องการที่จะ printf printf ไป 11 00:00:32,073 --> 00:00:34,350 28 สถานที่ของความแม่นยำ 12 00:00:34,350 --> 00:00:39,330 ตอนนี้ขอบันทึกและรวบรวมโปรแกรม เวลากับการทำ floats2 นี้ 13 00:00:39,330 --> 00:00:41,910 ทำงานกับ floats2 เฉือนจุด 14 00:00:41,910 --> 00:00:49,980 และรักพระเจ้าทุกครั้งที่ผมมองไม่เห็น 0.1 นี้ แต่ 0.10000000 ซึ่งเป็นสวย 15 00:00:49,980 --> 00:00:51,070 ที่ดีเพื่อให้ห่างไกล 16 00:00:51,070 --> 00:00:57,830 แต่แล้ว 14901161193847656250 17 00:00:57,830 --> 00:00:58,880 >> ดีสิ่งที่เกิดขึ้น 18 00:00:58,880 --> 00:01:02,280 ดีก็ปรากฎว่าลอยเป็น จะถูกเก็บไว้ภายในเครื่องคอมพิวเตอร์ 19 00:01:02,280 --> 00:01:03,500 กับ 32 บิต 20 00:01:03,500 --> 00:01:07,340 32 จะเห็นได้ชัดจำนวน จำกัด ซึ่ง แสดงให้เห็นว่าคุณสามารถเป็นเพียง 21 00:01:07,340 --> 00:01:11,050 กับ 32 บิตจำนวน จำกัด ค่าจุดลอย 22 00:01:11,050 --> 00:01:14,980 แต่น่าเสียดายที่ว่าหมายความว่า คอมพิวเตอร์ไม่สามารถแสดงเป็นไปได้ทั้งหมด 23 00:01:14,980 --> 00:01:18,110 หมายเลขจุดลอยหรือตัวเลขจริง ที่มีอยู่ในโลก 24 00:01:18,110 --> 00:01:19,980 เพราะมีบิตจำนวนมากเพียง 25 00:01:19,980 --> 00:01:23,940 >> และเพื่อให้สิ่งที่คอมพิวเตอร์เห็นได้ชัดว่า ทำในกรณีนี้จะเป็นตัวแทนของ 1/10 ที่จะ 26 00:01:23,940 --> 00:01:26,880 ลอยอยู่ใกล้ที่สุดที่เป็นไปได้ ค่าจุดที่จะสามารถ 27 00:01:26,880 --> 00:01:31,050 แต่ถ้าเรามองที่เรามีที่นี่ 28 ทศนิยมที่เราจะเริ่มที่จะเห็นว่า 28 00:01:31,050 --> 00:01:31,970 ไม่แน่ชัด 29 00:01:31,970 --> 00:01:34,480 ดังนั้นปัญหานี้เป็นปัญหากับ ไม่มีโซลูชั่นที่สมบูรณ์แบบ 30 00:01:34,480 --> 00:01:38,060 เราสามารถใช้คู่แทนที่จะลอย, ซึ่งมีแนวโน้มที่จะใช้ 64 บิตเป็น 31 00:01:38,060 --> 00:01:39,410 32 เมื่อเทียบกับ 32 00:01:39,410 --> 00:01:42,290 แต่แน่นอน, 64 ยัง จำกัด ดังนั้นปัญหาจะ 33 00:01:42,290 --> 00:01:43,630 ยังคงอยู่แม้จะมีคู่ 34 00:01:43,630 --> 00:01:46,323