คอมพิวเตอร์ถูกคิดค้นมาเพื่อช่วยเราคำนวณเรื่องที่ซับซ้อน แต่ว่าแ ค่บวกทศนิยมหลักเดียวก็ยังผิดเลย แบบนี้จะเชื่อได้หรอ?
โจทย์ง่าย ๆ อย่าง 0.1 + 0.2 ที่ไม่ต้องพึ่งคอมพิวเตอร์ก็รู้ว่ายังไงมันก็ต้องเท่ากับ 0.3 แต่พอป้อนให้คอมพิวเตอร์ทำงานมันดันออกมาเป็น 0.30000000000000004 เฉย
ไม่ว่าจะลองเขียนในภาษาไหนก็ให้คำตอบเหมือนกันหมด แสดงว่ามันไม่ใช่ปัญหาที่ตัวภาษาแล้วแต่เป็นที่การทำงานของคอมพิวเตอร์เรา ว่าแต่มันเกิดจากอะไร แล้วเราจะแก้มันอ ย่างไรดี?
ปัญหานี้ไม่ได้พบแค่ในคอมพิวเตอร์เท่านั้น!
แต่ถ้าบอกว่าปัญหานี้ไม่ใช่แค่คอมพิวเตอร์ที่เจอเท่านั้น แต่มนุษย์อย่างเราเคยเจอเหมือนกัน
หลายคนน่าจะเคยได้ยินมุกสุดคลาสสิกที่ให้ตัดเค้กออกเป็น 3 ส่วนเท่า ๆ กัน พอนำกลับมารวมกัน (0.333 + 0.333 + 0.333 = 0.999) มันดันหายไปไหน 0.001 (ซึ่งตามมุกก็คือมันอยู่บนมีด)
ถ้าลองคิดตามดูก็จะเป็นเพราะว่าจริงแล้วมันเป็น 0.33333… ไปเรื่อย ๆ ไม่รู้จบ แต่เราสนใจแค่ทศนิยม 3 หลักก็เลยปัดส่วนเกินทิ้งซึ่งก็เป็นเหตุให้ 0.001 ที่เราตามหาหายไป
แต่ถ้าเราเก็บทศนิยมได้ไม่จำกัดปัญหานี้ก็จะไม่เกิด เพราะเมื่อไม่ต้องปัดทิ้งก็จะไม่มีอะไรหายไป แต่มันก็เป็นไปไม่ได้ ซึ่งก็มาตรงกับกรณีเดียวที่คอมพิวเตอร์ที่ไม่สามารถเก็บทศนิยมไม่รู้จบให้เราได้จนต้องทำการปัดส่วนเกินไป
แต่ 0.1 กับ 0.2 ไม่ได้เป็นทศนิยมไม่รู้จบ ทำไมมันถึงมีปัญหาละ? อย่าลืมว่าคอมพิวเตอร์ไม่ได้รู้จักเลข 0-9 เหมือนกับเรา แต่รู้จักแค่ 0 กับ 1 ที่หมายถึงสถานะการปิด/เปิดบนวงจรเท่านั้น
ดั้งนั้นก่อนจะบวกให้เราได้นั้น จะต้องแปลงจากฐาน 10 เป็นฐาน 2 ก่อนซึ่งกระบวนการนี้ทำให้เกิดทศนิยมไม่รู้จบในระบบฐาน 2 จึงต้องมีการปัดทศนิยมเกิดขึ้น
เมื่อแปลงกลับมาเป็นฐาน 10 ก็จะได้ 0.30000000000000004 ที่คุ้นเคยจากความคลาดเคลื่อนในการปัดเศษ (rounding error)