บทความ

โปรแกรมบัญชีทศนิยมคลาดเคลื่อน
เกิดจากอะไร และป้องกันอย่างไร

เคยไหมที่ยอดรวมในรายงานต่างจากผลรวมรายการไป 0.01 บาท หรืองบทดลองไม่ลงตัวเพราะเศษสตางค์ ปัญหานี้ไม่ได้เกิดจากการคีย์ผิดเสมอไป หลายครั้งเกิดจากวิธีที่โปรแกรมเก็บและคำนวณตัวเลขเงิน

คำตอบสั้น: ทศนิยมคลาดเคลื่อนในโปรแกรมบัญชีเกิดจาก 2 สาเหตุหลัก คือการคำนวณเงินด้วยเลขทศนิยมลอยตัว (floating point) ซึ่งเก็บค่าอย่าง 0.1 ได้ไม่ตรง และการปัดเศษที่ไม่มีหลักเกณฑ์เดียวกันทั้งระบบ วิธีป้องกันคือคำนวณและเก็บเงินด้วยทศนิยมแบบแม่นยำ พร้อมกำหนดจำนวนทศนิยมและวิธีปัดให้ชัด

อาการของทศนิยมคลาดเคลื่อนในโปรแกรมบัญชี

ตัวเลขที่ต่างแค่สตางค์เดียวอาจดูไม่สำคัญ แต่ในงานบัญชีทุกยอดต้องกระทบกันได้ทุกสตางค์ เมื่อยอดไม่ตรง นักบัญชีต้องเสียเวลาไล่หาว่าผิดที่เอกสารใบไหน และยิ่งเอกสารมาก ยิ่งหายาก

สาเหตุที่ 1: floating point เก็บทศนิยมได้ไม่ตรง

คอมพิวเตอร์เก็บตัวเลขเป็นเลขฐานสอง ตัวเลขทศนิยมฐานสิบอย่าง 0.1 หรือ 0.2 แปลงเป็นฐานสองได้ไม่ลงตัว คล้ายกับที่ 1 ÷ 3 เขียนเป็นทศนิยมได้ไม่จบ เมื่อโปรแกรมใช้ชนิดตัวเลขแบบทศนิยมลอยตัว (floating point) ผลบวก 0.1 + 0.2 จึงได้ 0.30000000000000004 แทนที่จะเป็น 0.3 พอดี

สาเหตุที่ 2: ปัดเศษไม่เป็นระบบเดียวกัน

แม้ตัวเลขจะเก็บได้ตรง ถ้าแต่ละหน้าจอปัดเศษคนละวิธีหรือคนละจุด ยอดก็ยังไม่ตรงกันได้ ตัวอย่างเช่น เอกสารมีสินค้า 3 บรรทัด แต่ละบรรทัดคำนวณได้ 10.005 บาท ถ้าปัดทีละบรรทัดแบบปัดครึ่งขึ้นจะได้บรรทัดละ 10.01 บาท รวม 30.03 บาท แต่ถ้ารวมก่อนแล้วค่อยปัดจะได้ 30.015 ปัดเป็น 30.02 บาท ต่างกัน 0.01 บาท ทั้งที่คำนวณถูกทั้งสองแบบ

วิธีทดสอบว่าโปรแกรมบัญชีแม่นยำหรือไม่

ก่อนเลือกโปรแกรมบัญชี ให้ทดสอบด้วยตัวเลขที่มีเศษ ไม่ใช่ตัวเลขกลมอย่าง 100 หรือ 1,000 บาท เพราะตัวเลขกลมมักไม่เผยปัญหา

BC Ai Account จัดการตัวเลขเงินอย่างไร

ยอดเงินในเอกสารและบัญชีแยกประเภทของ BC Ai Account คำนวณและจัดเก็บเป็นทศนิยมแบบแม่นยำ และมีการตรวจยอดดุลก่อนบันทึกรายการบัญชี

ขอบเขตนี้ครอบคลุมยอดเงินในเอกสารและบัญชีแยกประเภท หากต้องการทดสอบกับข้อมูลของกิจการ แนะนำให้ลองบันทึกเอกสารที่มีเศษทศนิยมตามวิธีด้านบนก่อนตัดสินใจ

คำถามที่พบบ่อย (FAQ)

ทำไม 0.1 + 0.2 ในคอมพิวเตอร์ไม่เท่ากับ 0.3

เพราะคอมพิวเตอร์เก็บตัวเลขเป็นเลขฐานสอง และ 0.1 กับ 0.2 แปลงเป็นฐานสองได้ไม่ลงตัว ระบบที่ใช้ floating point จึงได้ 0.30000000000000004 โปรแกรมบัญชีจึงควรคำนวณเงินด้วยทศนิยมแบบแม่นยำ

เศษสตางค์ไม่ตรงเกิดจากการคีย์ผิดหรือไม่

เกิดได้ทั้งจากการคีย์ผิด การคำนวณด้วย floating point และการปัดเศษคนละจุด ถ้าตรวจแล้วเอกสารคีย์ถูกทั้งหมด แต่ยอดยังต่างกันเป็นสตางค์ ควรตรวจวิธีคำนวณและปัดเศษของโปรแกรม

ยอดเงินใน BC Ai Account เก็บอย่างไร

ยอดเงินในเอกสารและบัญชีแยกประเภทคำนวณและจัดเก็บเป็นทศนิยมแบบแม่นยำ

ถ้าเดบิตไม่เท่ากับเครดิต BC Ai Account บันทึกได้หรือไม่

บันทึกไม่ได้ ระบบไม่ยอมบันทึกรายการบัญชีที่ยอดเดบิตกับเครดิตไม่เท่ากัน

บทความที่เกี่ยวข้อง

ปรึกษาทีม BC Account ดูแพ็กเกจ