Blockdit Logo
Blockdit Logo (Mobile)
สำรวจ
ลงทุน
คำถาม
เข้าสู่ระบบ
มีบัญชีอยู่แล้ว?
เข้าสู่ระบบ
หรือ
ลงทะเบียน
Programmer Not Found !
•
ติดตาม
7 เม.ย. 2021 เวลา 15:55 • วิทยาศาสตร์ & เทคโนโลยี
ทำไมโปรแกรมคำนวณทศนิยมเพี้ยน?
0.1+0.2 = 0.30000000000000004 (ทศนิยมศูนย์ 15 ตัว)
ตอบแบบสั้นๆ ก็เป็นเพราะ
0.1 และ 0.2 แปลงเป็นเลขฐานสองจะได้ทศนิยมซ้ำไม่รู้จบ จึงเกิดการปัดเศษคลาดเคลื่อนตอนคอมพิวเตอร์คำนวณ ด้วยขนาดข้อมูลที่จำกัด
ฐาน 10 ฐาน 2
0.1 = 0.00011001100110011001101...
0.2 = 0.00110011001100110011011...
สำหรับคอมพิวเตอร์ จึงเหมือนประหนึ่งว่า
0.100_00125 + 0.200_0025 = 0.300_0040
ความคลาดเคลื่อนนี้เป็นที่ทศนิยมน้อยมากๆ ตำแหน่งที่ 16-18 ด้วยขนาดข้อมูล 64 บิต ซึ่งในชีวิตประจำวันเราใช้ทศนิยมเพียงแค่ 2-5 ตำแหน่ง จึงแทบจะไม่รู้สึกถึงความผิดปกติเลย ผลลัพธ์จะถูกปัดเศษ 0.5 ขึ้นลงด้วยการ round ตัวอย่างโค้ดปัดเศษ 2 ตำแหน่ง
round(x * 100) / 100
round(x + "E+2") + "E-2"
ถ้าเป็นการคำนวณที่ละเอียดมากๆ อย่างงานทางวิทยาศาสตร์ควอนตั้ม หรือการแปลงกสุลเงินคริปโต โปรแกรมเมอร์ก็จะใช้ชนิดข้อมูลแบบอาเรย์ของตัวเลขแทน ซึ่งจะคำนวณได้ช้ากว่าข้อมูลพื้นฐาน แต่ก็ได้ทศนิยมที่แม่นยำกว่า
https://0.30000000000000004.com/
**เรื่องทศนิยมซ้ำไม่รู้จบ เราพบได้ชีวิตประจำวันอยู่แล้วเช่น เศษ 1 ส่วน 3 ในฐานสิบ คือ 0.33333333333333... ไม่รู้จบ แต่ถ้าแปลงเป็นฐานสาม จะเขียนได้เป็น 0.1 ฐาน 3 ซึ่งรูปแบบฐานสองนั้นมีโอกาสเกิดทศนิยมซ้ำไม่รู้จบได้ง่ายกว่าฐานอื่นๆ ดังนั้นคอมพิวเตอร์จึงมีโอกาสคำนวณเพี้ยนได้ง่ายกว่า ซึ่งปัญหานี้ก็แก้ไขได้โดยการปัดเศษผลลัพธ์ให้น้อยกว่า 15 หลัก
บันทึก
โฆษณา
ดาวน์โหลดแอปพลิเคชัน
© 2024 Blockdit
เกี่ยวกับ
ช่วยเหลือ
คำถามที่พบบ่อย
นโยบายการโฆษณาและบูสต์โพสต์
นโยบายความเป็นส่วนตัว
แนวทางการใช้แบรนด์ Blockdit
Blockdit เพื่อธุรกิจ
ไทย