ข้ามไปเนื้อหาหลัก

ความถูกต้องบัญชี

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

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

อ่าน 5 นาที 25 ตุลาคม 2026 โดยทีม SML Soft

หน้าจอจริงสมุดรายวันทั่วไป (GL) ใน SML Ai Account & ERP โปรแกรมบัญชีแม่นยำ คำนวณเงินแบบทศนิยมตรงตัว ไม่มีเศษสตางค์ไม่ตรง

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

ทศนิยมคลาดเคลื่อนคือการที่ตัวเลขเงินในโปรแกรมต่างจากที่ควรเป็นไปเล็กน้อย ส่วนใหญ่อยู่ในระดับ 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
  • ยอดไม่เท่ากัน ระบบไม่ให้บันทึก
  • ค่าเสื่อมราคาสร้างรายการเดบิตและเครดิตให้อัตโนมัติ (วิธีเส้นตรง)
  • ลดเวลาไล่หาเศษสตางค์ตอนปิดงบ

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

คำถามที่พบบ่อยเกี่ยวกับเรื่องนี้

มีคำถามอื่น คุยกับผู้เชี่ยวชาญ
ทำไม 0.1 + 0.2 ในคอมพิวเตอร์ไม่เท่ากับ 0.3
เพราะคอมพิวเตอร์เก็บตัวเลขเป็นเลขฐานสอง และ 0.1 กับ 0.2 แปลงเป็นฐานสองได้ไม่ลงตัว ระบบที่ใช้ floating point จึงได้ 0.30000000000000004 โปรแกรมบัญชีจึงควรคำนวณเงินด้วยทศนิยมแบบตรงตัว
เศษสตางค์ไม่ตรงเกิดจากการคีย์ผิดหรือไม่
เกิดได้ทั้งจากการคีย์ผิด การคำนวณด้วย floating point และการปัดเศษคนละจุด ถ้าตรวจแล้วเอกสารคีย์ถูกทั้งหมด แต่ยอดยังต่างกันเป็นสตางค์ ควรตรวจวิธีคำนวณและปัดเศษของโปรแกรม
SML ใช้ floating point คำนวณเงินหรือไม่
ไม่ใช้ในงานบัญชีและเอกสารซื้อขายหลัก SML คำนวณเงินแบบทศนิยมตรงตัว เก็บเป็นชนิด NUMERIC ในฐานข้อมูล และปัดครึ่งขึ้นตามจำนวนทศนิยมที่ตั้งไว้
ถ้าเดบิตไม่เท่ากับเครดิต SML บันทึกได้หรือไม่
บันทึกไม่ได้ ก่อนบันทึกรายการลงบัญชีแยกประเภท ระบบตรวจว่าเดบิตรวมเท่ากับเครดิตรวม ถ้าไม่เท่ากันจะบันทึกไม่ได้
LINE ทดลองใช้ Demo