ไม่ได้ไปดูรายละเอียดนะครับ แต่จะแนะนำว่าให้เลี่ยงการใช้ Round(N, D) เพราะเมื่อหลักต่อไปที่จะปัดเศษมีค่าเป็น 5 เขาจะไม่ปัดขึ้นเสมอไป เขาจะใช้วิธี Banker Rounding ซึ่งตามกฏจะปัดขึ้นหรือลงไปยังเลขคู่ที่ใกล้ที่สุด เช่น Round(0.245, 2) ถ้าปัดขึ้นจะเป็น 0.25 แต่ปัดลงจะได้ 0.24 ดังนั้นเขาก็ปัดลงแทน จะได้เป็น 0.24 และ Round(0.235, 2) ก็จะได้ 0.24 เช่นกัน แต่ Access ยิ่งมั่วไปกว่านั้นในค่าตัวเลขบางตัว เช่น Round(1.245, 2) ก็ควรจะเป็น 1.24 แต่กลับเป็น 1.25 ไปซะอย่างงั้น ซึ่งขัดกับ Banker Rounding ไปเสียอีก
ถ้าจะปัดเป็น 2 หลัก ให้ใช้เป็น CDec(Format(N, "0.00")) ดีกว่าครับ แต่ถ้าแสดงเฉยๆไม่ได้เอาไปคำนวน ก็ใช้แค่ Format(N, "0.00") ก็พอ
อีกอย่างที่ขอแนะนำคือ อย่าใช้ประเภทข้อมูล Number-Single หรือ Double เพราะจะเก็บค่าที่ไม่ตรงกับข้อมูล โดยจะมีผิดเพี้ยนในทศนิยมตำแหน่งหลังๆได้ ควรใช้ Number-Decimal แล้วกำหนด Scale property เป็นจำนวนทศนิยมที่ต้องการเก็บ จะทำให้การคำนวนตัวเลขที่มีทศนิยมได้ตรงตามความจริง
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown