>> DAVID ลัน: ตอนนี้ขอให้พัดใจของคุณ
มันจะเปิดออกในโลกแห่งความเป็นจริงที่ 1 แบ่งออก 10 ย่อมเป็น 1/10 หรือ 0.1
แต่ในคอมพิวเตอร์ที่มีเพียง จำกัด จำนวนบิตที่จะ
แทนตัวเลขคุณไม่สามารถเสมอ เป็นตัวแทนของตัวเลขเช่น 1/10 ด้วย
ความแม่นยำที่สมบูรณ์แบบ
ในคำอื่น ๆ คอมพิวเตอร์บางครั้งอาจมี ที่จะทำให้สายการตัดสินและไม่ได้
จำเป็นต้องแสดงหมายเลขที่คุณ ต้องการเป็นอย่างแม่นยำตามที่ต้องการ
>> ตัวอย่างเช่นสมมติว่าฉันกลับไปเป็น โปรแกรมนี้และเปลี่ยน 0.1,
โอ้ 0.28 จึงแสดงให้เห็นว่า ฉันต้องการที่จะ printf printf ไป
28 สถานที่ของความแม่นยำ
ตอนนี้ขอบันทึกและรวบรวมโปรแกรม เวลากับการทำ floats2 นี้
ทำงานกับ floats2 เฉือนจุด
และรักพระเจ้าทุกครั้งที่ผมมองไม่เห็น 0.1 นี้ แต่ 0.10000000 ซึ่งเป็นสวย
ที่ดีเพื่อให้ห่างไกล
แต่แล้ว 14901161193847656250
>> ดีสิ่งที่เกิดขึ้น
ดีก็ปรากฎว่าลอยเป็น จะถูกเก็บไว้ภายในเครื่องคอมพิวเตอร์
กับ 32 บิต
32 จะเห็นได้ชัดจำนวน จำกัด ซึ่ง แสดงให้เห็นว่าคุณสามารถเป็นเพียง
กับ 32 บิตจำนวน จำกัด ค่าจุดลอย
แต่น่าเสียดายที่ว่าหมายความว่า คอมพิวเตอร์ไม่สามารถแสดงเป็นไปได้ทั้งหมด
หมายเลขจุดลอยหรือตัวเลขจริง ที่มีอยู่ในโลก
เพราะมีบิตจำนวนมากเพียง
>> และเพื่อให้สิ่งที่คอมพิวเตอร์เห็นได้ชัดว่า ทำในกรณีนี้จะเป็นตัวแทนของ 1/10 ที่จะ
ลอยอยู่ใกล้ที่สุดที่เป็นไปได้ ค่าจุดที่จะสามารถ
แต่ถ้าเรามองที่เรามีที่นี่ 28 ทศนิยมที่เราจะเริ่มที่จะเห็นว่า
ไม่แน่ชัด
ดังนั้นปัญหานี้เป็นปัญหากับ ไม่มีโซลูชั่นที่สมบูรณ์แบบ
เราสามารถใช้คู่แทนที่จะลอย, ซึ่งมีแนวโน้มที่จะใช้ 64 บิตเป็น
32 เมื่อเทียบกับ
แต่แน่นอน, 64 ยัง จำกัด ดังนั้นปัญหาจะ
ยังคงอยู่แม้จะมีคู่