Access : จุดเริ่มต้นที่ง่ายที่สุดสำหรับการเรียนรู้ ระบบฐานข้อมูล
Access : จุดเริ่มต้นที่ง่ายที่สุดสำหรับการเรียนรู้ การเขียนโปรแกรม
Access : เป็นได้ทั้งตัวเก็บฐานข้อมูล และตัวจัดการฐานข้อมูล
Thai Access : บอร์ดเสริมการเรียนรู้ Access ด้วยภาษาไทย

น้อมรำลึกในพระมหากรุณาธิคุณอันหาที่สุดมิได้ พระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดชฯ พระผู้เสด็จสู่สวรรคาลัย

 << Topic List
การ Rounding แบบต่างๆ ของโปรแกรม

Topic by Message Posted : on : 2/2/2547 22:52:06
surrealist  เรื่องนี้เป็นเรื่องสำคัญที่โปรแกรมเมอร์ควรใส่ใจ
ถ้าเกิดว่าเราต้องใช้การปัดเลขทศนิยม
ขอเอา article มาฝากกันนะครับ

algorithm ของการ rounding มีหลายวิธี แล้วโปรแกรม
(ทั้ง programming tools และ applications) ต่างๆ ก็เลือก
ใช้ algorithm ต่างๆ กันไป สิ่งที่เราต้องสนใจก็คง
เริ่มดูว่าวิธีที่ว่ามีอะไรบ้าง แล้วโปรแกรมที่เราไปเกี่ยวข้องด้วย
ใช้วิธีไหน แล้วถ้าเราเกิดอยากได้วิธีการ rounding แบบที่
โปรแกรมที่เราใช้ไม่มีให้จะทำอย่างไร.

Rounding algorithms
=======================
- Rounding Down
- Rounding Up
- Arithmetic Rounding
- Banker's Rounding (rounding แบบนายธนาคาร อันนี้เกี่ยวกับ Access ครับ)
- Random Rounding
- Alternative Rounding

ขอเน้นเฉพาะ Banker's rounding ก็แล้วกันครับ
คือถ้าโดยปกติเรามักจะต้องการให้ .5 ปัดขึ้น เช่น 2.45 ควรถูกปัดเป็น 2.5
แต่ banker คงไม่ชอบกระมัง ด้วยที่ว่า .5 มันอยู่ตรงกลาง
ถ้า .4 ปัดลง .6 ปัดขึ้น ก็ยังพอเข้าใจ แต่ .5 มันอยู่กึ่งกลาง
ดังนั้นถ้าปัดลงก็ไม่ถูก ปัดขึ้นก็ไม่ถูก

ไม่ถูกที่ว่านี้ก็คงประมาณว่า ถ้ามีการปัดเลขหลายจำนวน
ผลรวมของตัวเลขดังกล่าวก็จะ "บวม" หรือเพี้ยนไปมาก
อย่างนี้ banker ไม่ชอบครับ

วิธีการของ Banker's rounding ก็เลยใช้หลักว่า
ดูว่าเลขข้างหน้าเลข 5 ที่จะถูกปัดนั้นเป็นเลขคู่หรือคี่
ใช้หลักการเฉลี่ยไปว่า
ถ้าเป็นเลขคี่-->ปัดขึ้น
ถ้าเป็นเลขคู่-->ปัดลง

เปิด Access กดปุ่ม Ctrl+G แล้วทดลองพิมพ์ตามนี้
? round(1.15, 1)
1.2
? round(1.25, 1)
1.2


VBA ใช้ Banker's rounding algorithm ครับ
ส่วนโปรแกรมอื่นๆ ลองตรวจสอบดูนะครับ


อ่านเพิ่มเติมได้ที่
http://support.microsoft.com/default.aspx?scid=kb;en-us;196652
ซึ่งอธิบายละเอียด แล้วแจงว่าโปรแกรมค่าย Microsoft ใช้ algorithm ไหนกันบ้าง
ส่วนโปรแกรมภาษาอื่น ขอรบกวนเพื่อนที่ใช้โปรแกรม/ภาษาไหนอยู่
ช่วยตอบให้ได้ทราบกันด้วยนะครับ

1 Reply in this Topic. Dispaly 1 pages and you are on page number 1

Reply by Message on : 3/2/2547 9:41:54
สุภาพ
(R06371)
ขอบคุณ อ. สุเทพ มากครับ ที่แนะนำความรู้ดีๆ มาให้เพื่อนๆ ได้เรียนรู้กัน

ผมเองก็เจอปัญหากับ Round() ของหลายๆ Database ไม่ว่าจะเป็นกับ Access, Excel, Word, VB, SQL Server, Oracle, PostgreSQL, MySQL, AuthorWare อันเนื่องมาจาก algorithms ที่แต่ละโปรแกรมเลือกใช้นี่เอง

สำหรับท่านอื่นที่สนใจเกี่ยวกับสิ่งที่ผมเจอ Round() ของแต่ละโปรแกรม ให้ลองค้นด้วยคำว่า Round ดูครับ



Back to Top
+++ webboard source: ASPThai.Net Webboard 6.0 webbord +++++++ admin : yeadram +++