การปัดเศษขึ้น เป็นเลขจำนวนเต็ม ของ Access VBA
วันก่อนผมเขียนโปรแกรมสำหรับพิมพ์ใบปะหน้าซองข้อสอบ และต้องการคำนวณจำนวนกล่องที่ใช้ในการบรรจุข้อสอบ วิธีการคือ เอาจำนวนแผ่นกระดาษเป็นตัวตั้ง และหารด้วยจำนวนกระดาษในกล่องแต่ละขนาดที่สามารถบรรจุกระดาษได้ เช่น กล่องขนาดใหญ่ บรรจุกระดาษได้ 2,500 แผ่น ถ้ามีกระดาษ 5,000 แผ่น ก็ต้องใช้กล่อง 2 กล่อง
ทีนี้ ถ้าในกรณีที่มีกระดาษ 2,600 แผ่น ก็จะเหลือเศษไม่ถึงครึ่ง ถ้าใช้การปัดเศษธรรมดา ก็จะได้เป็น 2 กล่อง แต่ความจริงแม้จะเหลือเศษนิดหน่อยก็ต้องใช้กล่องอีกกล่องหนึ่ง ดังนั้นจึงต้องมีการปัดเศษขึ้นเป็นจำนวนเต็ม ไม่ว่าจะเหลือเศษเท่าไรก็ตาม
Access ไม่มีฟังก์ชันการปัดเศษขึ้นเสมอ ถ้าจะใช้ฟังก์ชัน Round() ก็จะไม่ได้ผลที่ต้องการ
อย่างนี้ต้องใช้ฟังก์ชัน int() แต่มีวิธีการเขียนเสียใหม่ เพื่อให้ได้เศษปัดขึ้นเสมอ เช่น 22 หารด้วย หารด้วย 3 จะได้ เท่ากับ 7.33 ปัดเศษ เป็น 8
สูตรมีดังนี้
-int(-ตัวตั้ง/ตัวหาร)
ตัวอย่าง
22 หารด้วย 3 จะได้ค่าเป็น 7.33 ถ้าปัดเศษธรรมดา จะได้ 7 แต่ถ้าต้องการให้ได้ 8 ต้องเขียน -int(-22/3) ซึ่งถ้าพิมพ์ใน immediate window จะได้ผลดังภาพ
ทีนี้ ถ้าในกรณีที่มีกระดาษ 2,600 แผ่น ก็จะเหลือเศษไม่ถึงครึ่ง ถ้าใช้การปัดเศษธรรมดา ก็จะได้เป็น 2 กล่อง แต่ความจริงแม้จะเหลือเศษนิดหน่อยก็ต้องใช้กล่องอีกกล่องหนึ่ง ดังนั้นจึงต้องมีการปัดเศษขึ้นเป็นจำนวนเต็ม ไม่ว่าจะเหลือเศษเท่าไรก็ตาม
Access ไม่มีฟังก์ชันการปัดเศษขึ้นเสมอ ถ้าจะใช้ฟังก์ชัน Round() ก็จะไม่ได้ผลที่ต้องการ
อย่างนี้ต้องใช้ฟังก์ชัน int() แต่มีวิธีการเขียนเสียใหม่ เพื่อให้ได้เศษปัดขึ้นเสมอ เช่น 22 หารด้วย หารด้วย 3 จะได้ เท่ากับ 7.33 ปัดเศษ เป็น 8
สูตรมีดังนี้
-int(-ตัวตั้ง/ตัวหาร)
ตัวอย่าง
22 หารด้วย 3 จะได้ค่าเป็น 7.33 ถ้าปัดเศษธรรมดา จะได้ 7 แต่ถ้าต้องการให้ได้ 8 ต้องเขียน -int(-22/3) ซึ่งถ้าพิมพ์ใน immediate window จะได้ผลดังภาพ
ฟังก์ชัน Round()
การปัดเศษธรรมดา ให้ใช้ฟังก์ชัน Round() ตามปกติ โดยมีรูปแบบดังนี้
Round(ตัวเลขที่มีทศนิยม, จำนวนตำแหน่งทศนิยม)
ตัวอย่าง
round(15.55,1) ผลที่ได้คือ 15.6
round(15.52,1) ผลที่ได้คือ 15.5
round(15.56,1) ผลที่ได้คือ 15.6
ขอบคุณครับ รอดตายแล้ว เขียนแล้วมาติดแหงกอยู่ตรงนี้พอดี
ตอบลบขอบคุณอย่างมากมายครับ ถ้าไม่ได้อ่านตรงนี้สงสัยว่าคงจะต้องงมโข่งอีกหลายวันละครับ