ความถูกต้องบัญชี
โปรแกรมบัญชีทศนิยมคลาดเคลื่อน เกิดจากอะไร
เคยไหมที่ยอดรวมในรายงานต่างจากผลรวมรายการไป 0.01 บาท หรืองบทดลองไม่ลงตัวเพราะเศษสตางค์ ปัญหานี้ไม่ได้เกิดจากการคีย์ผิดเสมอไป หลายครั้งเกิดจากวิธีที่โปรแกรมเก็บและคำนวณตัวเลขเงิน
อ่าน 5 นาที 25 ตุลาคม 2026 โดยทีม SML Soft
อาการของทศนิยมคลาดเคลื่อนในโปรแกรมบัญชี
ทศนิยมคลาดเคลื่อนคือการที่ตัวเลขเงินในโปรแกรมต่างจากที่ควรเป็นไปเล็กน้อย ส่วนใหญ่อยู่ในระดับ 0.01 บาท ตัวเลขที่ต่างแค่สตางค์เดียวอาจดูไม่สำคัญ แต่ในงานบัญชีทุกยอดต้องกระทบกันได้ทุกสตางค์ เมื่อยอดไม่ตรง นักบัญชีต้องเสียเวลาไล่หาว่าผิดที่เอกสารใบไหน และยิ่งเอกสารมาก ยิ่งหายาก
- ยอดรวมท้ายเอกสารไม่เท่ากับผลรวมของแต่ละบรรทัด
- ยอดในรายงานต่างจากยอดในบัญชีแยกประเภทไป 0.01 บาท
- งบทดลองเดบิตกับเครดิตต่างกันเป็นเศษสตางค์
- ยอดลูกหนี้คงค้างเหลือเศษสตางค์ ทั้งที่ลูกค้าจ่ายครบแล้ว
สาเหตุที่ 1: floating point เก็บทศนิยมได้ไม่ตรง
คอมพิวเตอร์เก็บตัวเลขเป็นเลขฐานสอง ตัวเลขทศนิยมฐานสิบอย่าง 0.1 หรือ 0.2 แปลงเป็นฐานสองได้ไม่ลงตัว คล้ายกับที่ 1 ÷ 3 เขียนเป็นทศนิยมได้ไม่จบ เมื่อโปรแกรมใช้ชนิดตัวเลขแบบทศนิยมลอยตัว (floating point) ผลบวก 0.1 + 0.2 จึงได้ 0.30000000000000004 แทนที่จะเป็น 0.3 พอดี ความต่างเล็กมากนี้สะสมขึ้นเมื่อบวกรายการจำนวนมาก และสามารถเปลี่ยนผลการปัดเศษได้ในที่สุด
- 0.1 + 0.2 ในระบบ floating point ได้ 0.30000000000000004
- ตัวเลข 1.005 ถูกเก็บจริงเป็น 1.00499999... เมื่อปัดเป็น 2 ตำแหน่งจึงอาจได้ 1.00 แทนที่จะเป็น 1.01
- ความคลาดเคลื่อนต่อรายการเล็กมาก แต่สะสมได้เมื่อมีเอกสารหลายพันใบ
- หน้าจอมักปัดตัวเลขให้ดูเรียบร้อย ผู้ใช้จึงไม่เห็นว่าค่าข้างในไม่ตรง
สาเหตุที่ 2: ปัดเศษไม่เป็นระบบเดียวกัน
แม้ตัวเลขจะเก็บได้ตรง ถ้าแต่ละหน้าจอปัดเศษคนละวิธีหรือคนละจุด ยอดก็ยังไม่ตรงกันได้ ตัวอย่างเช่น เอกสารมีสินค้า 3 บรรทัด แต่ละบรรทัดชั่งได้ 1.5 กิโลกรัม ราคากิโลกรัมละ 6.67 บาท คำนวณได้บรรทัดละ 10.005 บาท ถ้าปัดทีละบรรทัดแบบปัดครึ่งขึ้นจะได้บรรทัดละ 10.01 บาท รวม 30.03 บาท แต่ถ้ารวมก่อนแล้วค่อยปัดจะได้ 30.015 ปัดเป็น 30.02 บาท ต่างกัน 0.01 บาท ทั้งที่คำนวณถูกทั้งสองแบบ กิจการจึงต้องกำหนดให้ชัดว่าปัดที่จุดไหน ปัดกี่ตำแหน่ง และใช้วิธีเดียวกันทั้งระบบ
- กำหนดจำนวนทศนิยมของราคา จำนวน และยอดเงินให้ชัด
- กำหนดว่าปัดทีละบรรทัดหรือปัดที่ยอดรวม แล้วใช้แบบเดียวกันทุกเอกสาร
- ใช้วิธีปัดแบบเดียวกันทั้งระบบ เช่น ปัดครึ่งขึ้น
- ผลต่างจากการปัดเศษต้องบันทึกให้เห็น ไม่ซ่อนไว้ในยอดอื่น
วิธีทดสอบว่าโปรแกรมบัญชีแม่นยำหรือไม่
ก่อนเลือกโปรแกรมบัญชี ให้ทดสอบด้วยตัวเลขที่มีเศษ ไม่ใช่ตัวเลขกลมอย่าง 100 หรือ 1,000 บาท เพราะตัวเลขกลมมักไม่เผยปัญหา ลองบันทึกเอกสารที่มีราคาและจำนวนเป็นทศนิยมหลายสิบใบ แล้วเทียบยอดในเอกสาร รายงาน และบัญชีแยกประเภทว่าตรงกันทุกสตางค์หรือไม่ หากต่างกันแม้ 0.01 บาท ควรถามผู้ขายโปรแกรมว่าระบบเก็บตัวเลขเงินด้วยชนิดข้อมูลแบบใด และปัดเศษอย่างไร
- ทดลองราคาที่มีเศษ เช่น 6.67 บาท คูณจำนวน 1.5 หน่วย
- บันทึกเอกสารหลายสิบใบ แล้วเทียบผลรวมกับรายงาน
- ตรวจงบทดลองว่าเดบิตรวมเท่ากับเครดิตรวมพอดี
- ถามผู้ขายว่าระบบเก็บเงินเป็นทศนิยมตรงตัวหรือ floating point
SML คำนวณเงินแบบทศนิยมตรงตัว เก็บเป็น NUMERIC
SML Ai Account & ERP คำนวณเงินในงานบัญชีและเอกสารซื้อขายหลักแบบทศนิยมตรงตัว ไม่ใช้เลขทศนิยมลอยตัว (floating point) ตัวเลขเงินถูกเก็บในฐานข้อมูล PostgreSQL เป็นชนิด NUMERIC ซึ่งเก็บทศนิยมฐานสิบได้ตรงตามค่าที่บันทึก การปัดเศษใช้วิธีปัดครึ่งขึ้นตามจำนวนทศนิยมที่ตั้งไว้ จึงไม่มีเศษสตางค์เพี้ยนจากการคำนวณ ตรรกะบัญชีของระบบพัฒนาต่อยอดจากโปรแกรม SML รุ่นเดิมที่ธุรกิจไทยใช้มากว่า 30 ปี
- คำนวณเงินแบบทศนิยมตรงตัว ไม่ใช่ floating point
- เก็บตัวเลขเงินในฐานข้อมูลเป็นชนิด NUMERIC
- ปัดครึ่งขึ้นตามจำนวนทศนิยมที่ตั้งไว้
- ครอบคลุมงานบัญชีและเอกสารซื้อขายหลัก
ตรวจเดบิตเท่ากับเครดิตก่อนบันทึก GL ทุกครั้ง
ตัวเลขที่แม่นยำต้องมาคู่กับการตรวจยอดดุล ก่อนบันทึกรายการลงบัญชีแยกประเภท (GL) SML ตรวจว่าเดบิตรวมเท่ากับเครดิตรวม ถ้าไม่เท่ากันระบบจะไม่ให้บันทึก รายการที่ไม่สมดุลจึงไม่หลุดเข้าไปอยู่ในบัญชี ส่วนค่าเสื่อมราคาสินทรัพย์ ระบบสร้างรายการเดบิตและเครดิตให้อัตโนมัติด้วยวิธีเส้นตรง ลดการคำนวณและคีย์ตัวเลขเองทุกงวด
- ตรวจเดบิตรวม = เครดิตรวม ก่อนบันทึก GL
- ยอดไม่เท่ากัน ระบบไม่ให้บันทึก
- ค่าเสื่อมราคาสร้างรายการเดบิตและเครดิตให้อัตโนมัติ (วิธีเส้นตรง)
- ลดเวลาไล่หาเศษสตางค์ตอนปิดงบ
คำถามที่พบบ่อย