กลับไปหน้าบทความ

อ่าน 19 นาที

การปัดเศษ

การปัดเศษ หรือ การปัดลง คือกระบวนการปรับ ตัวเลข ให้ เป็น ค่า โดยประมาณ ที่สะดวกกว่า โดยมักจะมีรูปแบบที่สั้นกว่าหรือเรียบง่ายกว่า ตัวอย่างเช่น การแทนที่ 23.4476 ดอลลาร์ด้วย 23.

การปัดเศษ

กราฟแสดงผลลัพธ์yของการปัดเศษxโดยใช้วิธีการต่างๆ เพื่อความชัดเจน กราฟจะแสดงโดยเลื่อนออกจาก ค่า y ที่เป็นจำนวนเต็ม ในไฟล์ SVG ให้เลื่อนเมาส์ไปเหนือวิธีการเพื่อไฮไลต์ และใน เบราว์เซอร์ที่เปิดใช้งาน SMILให้คลิกเพื่อเลือกหรือยกเลิกการเลือก

การปัดเศษหรือการปัดลงคือกระบวนการปรับตัวเลข ให้ เป็น ค่า โดยประมาณที่สะดวกกว่า โดยมักจะมีรูปแบบที่สั้นกว่าหรือเรียบง่ายกว่า ตัวอย่างเช่น การแทนที่ 23.4476 ดอลลาร์ด้วย 23.45 ดอลลาร์เศษส่วน 312/937 ด้วย 1/3 หรือนิพจน์ √2 ด้วย 1.414

การปัดเศษมักทำเพื่อให้ได้ค่าที่รายงานและสื่อสารได้ง่ายกว่าค่าเดิม การปัดเศษยังมีความสำคัญเพื่อหลีกเลี่ยง การรายงานตัวเลข การวัด หรือค่าประมาณ ที่แม่นยำเกินจริงจนอาจทำให้เข้าใจผิดได้ตัวอย่างเช่น ปริมาณที่คำนวณได้ 123456 แต่ทราบว่ามีความแม่นยำเพียงไม่กี่ร้อยหน่วย มักจะระบุได้ดีกว่าว่า "ประมาณ 123500"

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

การปัดเศษฟังก์ชันทางคณิตศาสตร์เชิงอดิศัย ให้ถูกต้อง นั้นทำได้ยาก เนื่องจากไม่สามารถทราบจำนวนหลักเพิ่มเติมที่ต้องคำนวณเพื่อหาว่าควรปัดขึ้นหรือปัดลงล่วงหน้าได้ ปัญหานี้เรียกว่า " ภาวะกลืนไม่เข้าคายไม่ออกของคนทำตาราง "

การปัดเศษมีความคล้ายคลึงหลายประการกับการแปลงค่าเชิงปริมาณที่เกิดขึ้นเมื่อต้องเข้ารหัสปริมาณทางกายภาพ ด้วยตัวเลขหรือ สัญญาณดิจิทัล

เครื่องหมายเท่ากับหยัก ( ) บางครั้งใช้เพื่อระบุการปัดเศษของตัวเลขที่แน่นอน เช่น 9.98 ≈ 10 เครื่องหมายนี้ได้รับการแนะนำโดยAlfred George Greenhillในปี 1892 [ 1 ]

คุณลักษณะที่เหมาะสมของวิธีการปัดเศษ ได้แก่:

  1. ควรทำการปัดเศษโดยใช้ฟังก์ชันด้วยวิธีนี้ เมื่อปัดเศษข้อมูลเดียวกันในหลายๆ ครั้ง ผลลัพธ์ที่ได้จะไม่เปลี่ยนแปลง
  2. ผลการคำนวณที่ปัดเศษควรใกล้เคียงกับผลการคำนวณที่ไม่ปัดเศษ
    • จากผลของ (1) และ (2) ผลลัพธ์จากการปัดเศษควรใกล้เคียงกับค่าป้อนเข้า โดยมักจะใกล้เคียงที่สุดเท่าที่จะเป็นไปได้
  3. เพื่อให้ถือว่าเป็นการปัดเศษช่วง ของค่า จะต้องเป็นส่วนย่อยของโดเมนซึ่งมักจะเป็นค่าไม่ต่อเนื่องช่วงของค่าแบบคลาสสิกคือจำนวนเต็ม
  4. การปัดเศษควรคงไว้ ซึ่ง ความสมมาตรที่มีอยู่แล้วระหว่างโดเมนและเรนจ์ ด้วยความแม่นยำที่จำกัด (หรือโดเมนแบบไม่ต่อเนื่อง) สิ่งนี้หมายถึงการขจัดอคติ
  5. วิธีการปัดเศษควรมีประโยชน์ในวิทยาศาสตร์คอมพิวเตอร์หรือการคำนวณทางคณิตศาสตร์ของมนุษย์ที่ใช้ความแม่นยำจำกัด และความเร็วเป็นปัจจัยสำคัญ

เนื่องจากโดยปกติแล้วเป็นไปไม่ได้ที่วิธีการใดวิธีการหนึ่งจะสามารถตอบสนองคุณลักษณะในอุดมคติได้ทั้งหมด จึงมีวิธีการปัดเศษที่หลากหลายมากมาย

โดยทั่วไปแล้ว การปัดเศษเป็นคุณสมบัติที่คงตัว[ 2 ]กล่าวคือ เมื่อปัดเศษตัวเลขแล้ว การปัดเศษอีกครั้งด้วยความแม่นยำเท่าเดิมจะไม่ทำให้ค่าของตัวเลขเปลี่ยนแปลง ฟังก์ชันการปัดเศษยังเป็นฟังก์ชันโมโนโทนิกกล่าวคือ การปัดเศษตัวเลขสองตัวด้วยความแม่นยำสัมบูรณ์เท่าเดิมจะไม่ทำให้ลำดับของตัวเลขสลับ กัน (แต่อาจให้ค่าเดียวกัน) ในกรณีทั่วไปของช่วงที่ไม่ต่อเนื่อง ฟังก์ชันเหล่านี้เป็นฟังก์ชันคงที่แบบเป็นช่วง

ประเภทของการปัดเศษ

ปัญหาการปัดเศษที่พบได้ทั่วไป ได้แก่:

ปัญหาการปัดเศษ ตัวอย่างข้อมูลป้อนเข้า ผลลัพธ์ เกณฑ์การปัดเศษ
การประมาณค่าจำนวนอตรรกยะด้วยเศษส่วน π22/7 ตัวหาร 1 หลัก
การประมาณค่าจำนวนตรรกยะด้วยเศษส่วนที่มีตัวส่วนเล็กกว่า 399 / 941 3/7 ตัวหาร 1 หลัก
การประมาณค่าเศษส่วนด้วยจำนวนทศนิยมที่ เป็นเศษส่วน5/3 1.6667 ทศนิยม 4 ตำแหน่ง
การประมาณค่าทศนิยมที่ เป็นเศษส่วน ด้วยค่าหนึ่งโดยใช้จำนวนหลักที่น้อยกว่า 2.1784 2.18 ทศนิยม 2 ตำแหน่ง
การประมาณค่า จำนวนเต็มทศนิยม ด้วยจำนวนเต็มที่มีเลขศูนย์ต่อท้ายมากกว่า 23217 23200 ตัวเลขสำคัญ 3 หลัก
การประมาณ ค่าจำนวนเต็มทศนิยมขนาดใหญ่โดยใช้สัญกรณ์วิทยาศาสตร์300999999 3.01 × 10 8ตัวเลขสำคัญ 3 หลัก
การประมาณค่าโดยใช้จำนวนทวีคูณของจำนวนที่กำหนด 48.2 45 ทวีคูณของ 15
ประมาณค่าแต่ละจำนวนจริงในชุดจำกัดด้วยจำนวนเต็มเพื่อให้ผลรวมของจำนวนที่ปัดเศษเท่ากับผลรวมที่ปัดเศษของจำนวนเหล่านั้น[ nb 1 ]⁠ ⁠{0, 0, 1} ผลรวมขององค์ประกอบที่ปัดเศษเท่ากับผลรวมขององค์ประกอบที่ปัดเศษ

การปัดเศษเป็นจำนวนเต็ม

รูปแบบพื้นฐานที่สุดของการปัดเศษคือการแทนที่ตัวเลขใดๆ ด้วยจำนวนเต็ม โหมดการปัดเศษทั้งหมดต่อไปนี้เป็นการนำขั้นตอน "round()" ที่มีอาร์กิวเมนต์เดียวมาใช้ในรูปแบบที่เป็นรูปธรรม ฟังก์ชันเหล่านี้เป็นฟังก์ชันที่แท้จริง (ยกเว้นฟังก์ชันที่ใช้ค่าสุ่ม)

การปัดเศษแบบกำหนดทิศทางให้เป็นจำนวนเต็ม

วิธีการทั้งสี่นี้เรียกว่าการปัดเศษแบบมีทิศทางไปยังจำนวนเต็มเนื่องจากค่าที่ปัดจากจำนวนเดิมxไปยังค่าที่ปัดแล้วyนั้นมีทิศทางเข้าหาหรือออกจากค่าจำกัดเดียวกัน (0, +∞หรือ−∞ ) การปัดเศษแบบมีทิศทางใช้ในเลขคณิตช่วงและมักจำเป็นในการคำนวณทางการเงิน

ถ้าxเป็นจำนวนบวก การปัดลงจะเหมือนกับการปัดเข้าหาศูนย์ และการปัดขึ้นจะเหมือนกับการปัดออกจากศูนย์ ถ้าxเป็นจำนวนลบ การปัดลงจะเหมือนกับการปัดออกจากศูนย์ และการปัดขึ้นจะเหมือนกับการปัดเข้าหาศูนย์ ไม่ว่าในกรณีใด ถ้าxเป็นจำนวนเต็มyก็คือxนั่นเอง

ในกรณีที่มีการคำนวณหลายครั้งต่อเนื่องกัน การเลือกวิธีการปัดเศษอาจส่งผลกระทบอย่างมากต่อผลลัพธ์ ตัวอย่างที่มีชื่อเสียงคือดัชนี ใหม่ ที่จัดตั้งขึ้นโดยตลาดหลักทรัพย์แวนคูเวอร์ในปี 1982 ดัชนีนี้ถูกตั้งค่าเริ่มต้นที่ 1,000,000 (ความแม่นยำสามตำแหน่งทศนิยม) และหลังจาก 22 เดือน ดัชนีลดลงเหลือประมาณ 520 แม้ว่าตลาดจะดูเหมือนกำลังเพิ่มขึ้น ปัญหาเกิดจากการคำนวณดัชนีใหม่หลายพันครั้งต่อวัน และมักจะถูกตัดทอน (ปัดลง) เหลือ 3 ตำแหน่งทศนิยม ในลักษณะที่ข้อผิดพลาดในการปัดเศษสะสม การคำนวณดัชนีใหม่สำหรับช่วงเวลาเดียวกันโดยใช้การปัดเศษเป็นทศนิยมสามตำแหน่งที่ใกล้ที่สุดแทนการตัดทอน ทำให้ค่าดัชนีแก้ไขจาก 524,811 เป็น 1,098,892 [ 3 ]

สำหรับตัวอย่างด้านล่างsgn( x )หมายถึงฟังก์ชันเครื่องหมาย ที่ ใช้ กับตัวเลขดั้งเดิมx

ปัดลง

เราอาจปัดลง (หรือปัดเศษลงด้าน ล่างหรือปัดเข้าหาค่าลบอนันต์ ): yคือจำนวนเต็มที่มากที่สุดที่ไม่เกินx

ตัวอย่างเช่น 23.7 จะปัดเศษเป็น 23 และ −23.2 จะปัดเศษเป็น −24

ปัดเศษขึ้น

นอกจากนี้ยังสามารถปัดขึ้น (หรือปัดขึ้นด้านบนหรือปัดเข้าหาค่าอนันต์บวก ) ได้ โดยy คือจำนวนเต็มที่เล็กที่สุดที่ไม่น้อยกว่าx

ตัวอย่างเช่น 23.2 ปัดเศษเป็น 24 และ −23.7 ปัดเศษเป็น −23

ปัดเศษเข้าหาศูนย์

นอกจากนี้ยังสามารถปัดเศษเข้าหาศูนย์ได้ (หรือตัดทิ้งหรือปัดเศษออกจากอนันต์ ) โดยที่yคือจำนวนเต็มที่ใกล้เคียงกับx มากที่สุด โดยอยู่ระหว่าง 0 และx (รวมทั้ง 0 และ x ด้วย) กล่าวคือyคือส่วนจำนวนเต็มของxโดยไม่รวมส่วนที่เป็นเศษส่วน

ตัวอย่างเช่น 23.7 จะปัดเศษเป็น 23 และ −23.7 จะปัดเศษเป็น −23

ปัดเศษออกจากศูนย์

นอกจากนี้ยังสามารถปัดเศษออกจากศูนย์ (หรือปัดเศษเข้าหาอนันต์ ) ได้ โดยที่yคือจำนวนเต็มที่ใกล้เคียง 0 มากที่สุด (หรือเทียบเท่ากับx ) โดยที่xอยู่ระหว่าง 0 และy (รวมทั้ง 0 และ y ด้วย)

ตัวอย่างเช่น 23.2 ปัดเศษเป็น 24 และ −23.2 ปัดเศษเป็น −24

ปัดเศษให้เป็นจำนวนเต็มที่ใกล้ที่สุด

วิธีการทั้งหกนี้เรียกว่าการปัดเศษให้เป็นจำนวนเต็มที่ใกล้ที่สุดการปัดเศษจำนวนxให้เป็นจำนวนเต็มที่ใกล้ที่สุดนั้น จำเป็นต้องมีกฎการแก้ปัญหาในกรณีที่xอยู่กึ่งกลางระหว่างจำนวนเต็มสองจำนวนพอดี นั่นคือ เมื่อส่วนที่เป็นเศษส่วนของxมีค่าเท่ากับ 0.5 พอดี

หากไม่มีส่วนที่เป็นเศษส่วน 0.5 ข้อผิดพลาดจากการปัดเศษที่เกิดจากวิธีการปัดเศษให้ใกล้เคียงที่สุดจะเป็นแบบสมมาตร กล่าวคือ สำหรับทุกเศษส่วนที่ถูกปัดลง (เช่น 0.268) จะมีเศษส่วนส่วนเติมเต็ม (นั่นคือ 0.732) ที่ถูกปัดขึ้นด้วยจำนวนเท่ากัน

เมื่อปัดเศษชุดตัวเลขทศนิยมคงที่ ขนาดใหญ่ที่มีส่วนทศนิยมกระจาย ตัวอย่างสม่ำเสมอข้อผิดพลาดในการปัดเศษของค่าทั้งหมด โดยไม่รวมค่าที่มีส่วนทศนิยม 0.5 จะหักล้างกันทางสถิติ ซึ่งหมายความว่าค่าที่คาดหวัง (ค่าเฉลี่ย)ของตัวเลขที่ปัดเศษแล้วจะเท่ากับค่าที่คาดหวังของตัวเลขเดิมเมื่อตัดตัวเลขที่มีส่วนทศนิยม 0.5 ออกจากชุด

ในทางปฏิบัติ มักใช้ตัวเลข ทศนิยมซึ่งมีความซับซ้อนในการคำนวณมากกว่า เนื่องจากระยะห่างของตัวเลขไม่เท่ากัน

ปัดเศษขึ้นครึ่งหนึ่ง

เราอาจปัดเศษครึ่งหนึ่งขึ้น (หรือปัดเศษครึ่งหนึ่งไปทางค่าอนันต์บวก ) ซึ่งเป็นกฎการตัดสินกรณีที่มีค่าเท่ากันที่ใช้กันอย่างแพร่หลายในหลายสาขาวิชา กล่าวคือ ค่ากึ่งกลางของxจะถูกปัดขึ้นเสมอ ถ้าส่วนที่เป็นเศษส่วนของxเท่ากับ 0.5 พอดี แล้วy = x + 0.5

ตัวอย่างเช่น 23.5 จะปัดเศษเป็น 24 และ −23.5 จะปัดเศษเป็น −23

ภาษาโปรแกรมบางภาษา (เช่น Java และ Python) ใช้คำว่า "half up" เพื่ออ้างถึงการปัดเศษครึ่งหนึ่งออกจากศูนย์แทนที่จะปัดเศษครึ่งหนึ่งเข้าหาค่าอนันต์บวก[ 4 ] [ 5 ]

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

ปัดลงครึ่งหนึ่ง

นอกจากนี้ เราอาจปัดเศษครึ่งหนึ่งลง (หรือปัดเศษครึ่งหนึ่งเข้าหาค่าลบอนันต์ ) แทนที่จะปัดเศษครึ่งหนึ่งขึ้น ซึ่งเป็นวิธีที่นิยมมากกว่า ถ้าส่วนที่เป็นเศษส่วนของxเท่ากับ 0.5 พอดี แล้วy = x − 0.5

ตัวอย่างเช่น 23.5 จะปัดเศษเป็น 23 และ −23.5 จะปัดเศษเป็น −24

ภาษาโปรแกรมบางภาษา (เช่น Java และ Python) ใช้คำว่า "half down" เพื่อหมายถึงการปัดเศษครึ่งหนึ่งเข้าหาศูนย์แทนที่จะปัดเศษครึ่งหนึ่งเข้าหาค่าลบอนันต์[ 4 ] [ 5 ]

ปัดเศษครึ่งหนึ่งเข้าหาศูนย์

นอกจากนี้ เราอาจปัดเศษครึ่งหนึ่งเข้าหาศูนย์ (หรือปัดเศษครึ่งหนึ่งออกจากค่าอนันต์ ) แทนการปัดเศษครึ่งหนึ่งออกจากศูนย์ ตามปกติ ถ้าส่วนที่เป็นเศษส่วนของxเท่ากับ 0.5 พอดีy = x − 0.5ถ้าxเป็นค่าบวก และy = x + 0.5ถ้าxเป็นค่าลบ

ตัวอย่างเช่น 23.5 จะปัดเศษเป็น 23 และ −23.5 จะปัดเศษเป็น −23

วิธีการนี้ปฏิบัติต่อค่าบวกและค่าลบอย่างสมมาตร ดังนั้นจึงปราศจากอคติโดยรวมต่อค่าบวก/ลบ หากตัวเลขดั้งเดิมเป็นบวกหรือลบด้วยความน่าจะเป็นเท่ากัน อย่างไรก็ตาม วิธีนี้ยังคงมีอคติไปทางศูนย์อยู่บ้าง

ปัดเศษครึ่งหนึ่งออกจากศูนย์

นอกจากนี้ เราอาจปัดเศษครึ่งหนึ่งออกจากศูนย์ (หรือปัดเศษครึ่งหนึ่งเข้าหาค่าอนันต์ ) ซึ่งเป็นกฎการแก้ปัญหาค่าเท่ากันที่นิยมสอนและใช้กันทั่วไป กล่าวคือ ถ้าส่วนที่เป็นเศษส่วนของxเท่ากับ 0.5 พอดี แล้วy = x + 0.5ถ้าxเป็นค่าบวก และy = x − 0.5ถ้าxเป็นค่าลบ

ตัวอย่างเช่น 23.5 ปัดเศษเป็น 24 และ −23.5 ปัดเศษเป็น −24

วิธีนี้อาจมีประสิทธิภาพมากกว่าในคอมพิวเตอร์ที่ใช้ การแสดงค่า แบบเครื่องหมายและขนาด (sign-magnitude representation) สำหรับค่าที่จะปัดเศษ เพราะจะต้องพิจารณาเฉพาะตัวเลขหลักแรกที่ละเว้นไปเท่านั้นเพื่อกำหนดว่าจะปัดขึ้นหรือปัดลง นี่เป็นหนึ่งในวิธีการที่ใช้ในการปัดเศษให้ได้จำนวนหลักสำคัญเนื่องจากความเรียบง่าย

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

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

ปัดเศษครึ่งให้เป็นจำนวนเต็ม

นอกจากนี้ยังสามารถปัดเศษครึ่งให้เป็นจำนวนคู่ได้ซึ่งเป็นกฎการแก้ปัญหาค่าเท่ากันโดยไม่มีอคติเชิงบวก/ลบและไม่มีอคติเข้าหา/ออกจากศูนย์ ตามหลักการนี้ ถ้าส่วนที่เป็นเศษส่วนของxคือ 0.5 แล้วyจะเป็นจำนวนเต็มคู่ที่ใกล้เคียงx ที่สุด ตัวอย่างเช่น 23.5 จะกลายเป็น 24 เช่นเดียวกับ 24.5 แต่ −23.5 จะกลายเป็น −24 เช่นเดียวกับ −24.5 ฟังก์ชันนี้จะลดข้อผิดพลาดที่คาดหวังให้น้อยที่สุดเมื่อทำการบวกตัวเลขที่ปัดเศษแล้ว โดยไม่คำนึงถึงว่าตัวเลขที่ป้อนเข้ามาส่วนใหญ่เป็นบวกหรือลบ ตราบใดที่ตัวเลขเหล่านั้นไม่ใช่จำนวนคู่หรือจำนวนคี่เป็นส่วนใหญ่

รูปแบบการปัดเศษให้ใกล้เคียงที่สุดนี้ยังเรียกว่าการปัดเศษแบบบรรจบกัน การปัดเศษแบบนักสถิติ การปัดเศษแบบดัตช์การปัดเศษแบบเกาส์เซียนการปัดเศษแบบเลขคี่ - เลขคู่ [ 6 ]หรือ การปัดเศษ แบบนายธนาคาร[ 7 ]

นี่คือโหมดการปัดเศษเริ่มต้นที่ใช้ใน การดำเนินการตามมาตรฐาน IEEE 754สำหรับผลลัพธ์ในรูปแบบเลขฐานสองแบบลอยตัว

ด้วยการขจัดอคติ การบวกหรือลบจำนวนอิสระซ้ำๆ เช่น ในการเดินสุ่มแบบหนึ่งมิติจะให้ผลลัพธ์ที่ปัดเศษโดยมีข้อผิดพลาดซึ่งมีแนวโน้มที่จะเพิ่มขึ้นตามสัดส่วนของรากที่สองของจำนวนการดำเนินการ มากกว่าที่จะเพิ่มขึ้นแบบเชิงเส้น

อย่างไรก็ตาม กฎนี้ทำให้การกระจายตัวผิดเพี้ยนไป โดยเพิ่มความน่าจะเป็นของเลขคู่เมื่อเทียบกับเลขคี่ นั่นเป็นเหตุผลว่าทำไมกฎนี้จึงใช้ในสถานการณ์ที่ผลรวมมีความสำคัญมากกว่าการกระจายตัว

ปัดเศษครึ่งให้เป็นเลขคี่

เราอาจปัดเศษครึ่งให้เป็นจำนวนคี่ซึ่งเป็นกฎการแก้ปัญหากรณีเศษส่วนเท่ากันที่คล้ายกับการปัดเศษครึ่งให้เป็นจำนวนคู่ ในวิธีนี้ ถ้าส่วนที่เป็นเศษส่วนของxคือ 0.5 แล้วyจะเป็นจำนวนคี่ที่ใกล้เคียงxที่สุด ตัวอย่างเช่น 23.5 จะกลายเป็น 23 เช่นเดียวกับ 22.5 ในขณะที่ −23.5 จะกลายเป็น −23 เช่นเดียวกับ −22.5

วิธีนี้ยังปราศจากอคติเชิงบวก/ลบ และอคติเข้า/ออกจากศูนย์ ตราบใดที่ตัวเลขที่จะปัดเศษไม่ใช่เลขคู่หรือเลขคี่เป็นส่วนใหญ่ นอกจากนี้ยังมีคุณสมบัติการปัดเศษครึ่งหนึ่งให้เป็นเลขคู่ที่ทำให้การกระจายเดิมผิดเพี้ยนไป เนื่องจากเป็นการเพิ่มความน่าจะเป็นของเลขคี่เมื่อเทียบกับเลขคู่ วิธีนี้ถูกใช้สำหรับยอดคงเหลือในธนาคารในสหราชอาณาจักร เมื่อมีการ เปลี่ยน สกุลเงินเป็นระบบทศนิยม[ 8 ]

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

การปัดเศษแบบสุ่มให้เป็นจำนวนเต็ม

การสลับกันตัดสินผลเสมอ

วิธีหนึ่งที่ค่อนข้างไม่เป็นที่รู้จักมากนัก คือการสลับทิศทางการปัดเศษเมื่อปัดเศษตัวเลขที่มีส่วนทศนิยม 0.5 ส่วนตัวเลขอื่นๆ จะปัดเศษเป็นจำนวนเต็มที่ใกล้ที่สุด เมื่อใดก็ตามที่ส่วนทศนิยมเป็น 0.5 ให้สลับการปัดขึ้นหรือลง: สำหรับส่วนทศนิยม 0.5 ครั้งแรก ให้ปัดขึ้น สำหรับครั้งที่สอง ให้ปัดลง และต่อไปเรื่อยๆ หรืออีกวิธีหนึ่ง การปัดเศษส่วนทศนิยม 0.5 ครั้งแรกสามารถกำหนดได้โดยใช้ค่าเริ่มต้นแบบสุ่ม "ขึ้น" และ "ลง" สามารถเป็นวิธีการปัดเศษสองวิธีใดๆ ที่ตรงข้ามกัน เช่น เข้าหาและออกจากอนันต์บวก หรือเข้าหาและออกจากศูนย์

หากการปรากฏของเศษส่วน 0.5 เกิดขึ้นบ่อยกว่าการเริ่มต้นนับใหม่อย่างมีนัยสำคัญ ก็ถือว่าไม่มีอคติ ด้วยการรับประกันว่าไม่มีอคติ จึงมีประโยชน์หากต้องการบวกหรือหาค่าเฉลี่ยของตัวเลขเหล่านั้น

การสุ่มเพื่อตัดสินกรณีเสมอกัน

ถ้าส่วนที่เป็นทศนิยมของxคือ 0.5 ให้สุ่มเลือกyระหว่างx + 0.5และx − 0.5ด้วยความน่าจะเป็นเท่ากัน ส่วนค่าอื่นๆ ให้ปัดเศษเป็นจำนวนเต็มที่ใกล้ที่สุด

เช่นเดียวกับการปัดเศษครึ่งไปเป็นเลขคู่และการปัดเศษครึ่งไปเป็นเลขคี่ กฎนี้โดยพื้นฐานแล้วปราศจากอคติโดยรวม แต่ก็มีความยุติธรรมระหว่าง ค่า y ที่เป็นเลขคู่และเลขคี่ ข้อดีเหนือการตัดสินกรณีค่าเท่ากันแบบอื่นคือ ไม่จำเป็นต้อง "จำ" ทิศทางการปัดเศษครั้งสุดท้ายในส่วนทศนิยม 0.5

การปัดเศษแบบสุ่ม

การปัดเศษดังต่อไปนี้ไปยังจำนวนเต็มที่ใกล้เคียงที่สุดกับลบอนันต์และจำนวนเต็มที่ใกล้เคียงที่สุดกับบวกอนันต์ โดยมีความน่าจะเป็นขึ้นอยู่กับความใกล้เคียง เรียกว่า การปัดเศษ แบบสุ่มและจะให้ผลลัพธ์ที่ไม่ลำเอียงโดยเฉลี่ย[ 9 ]

ตัวอย่างเช่น 1.6 จะถูกปัดเป็น 1 ด้วยความน่าจะเป็น 0.4 และจะถูกปัดเป็น 2 ด้วยความน่าจะเป็น 0.6

การปัดเศษแบบสุ่มสามารถมีความแม่นยำในแบบที่ฟังก์ชัน การปัดเศษ ไม่สามารถทำได้ ตัวอย่างเช่น สมมติว่าเริ่มต้นด้วย 0 และเพิ่ม 0.3 เข้าไป 100 ครั้ง โดยปัดเศษผลรวมที่เกิดขึ้นระหว่างการเพิ่มแต่ละครั้ง ผลลัพธ์จะเป็น 0 หากใช้การปัดเศษแบบปกติ แต่หากใช้การปัดเศษแบบสุ่ม ผลลัพธ์ที่คาดหวังจะเป็น 30 ซึ่งเป็นค่าเดียวกันกับที่ได้โดยไม่ปัดเศษ วิธีนี้อาจมีประโยชน์ในการเรียนรู้ของเครื่องที่การฝึกอบรมอาจใช้การคำนวณเลขคณิตที่มีความแม่นยำต่ำซ้ำๆ[ 9 ] การปัดเศษแบบสุ่มยังเป็นวิธีหนึ่งในการทำให้เกิด การกระจายแบบ 1 มิติ

การเปรียบเทียบวิธีการปัดเศษให้เป็นจำนวนเต็ม

ค่า วิธีการเชิงฟังก์ชัน วิธีการสุ่ม
การปัดเศษแบบกำหนดทิศทาง ปัดเศษให้ใกล้เคียงที่สุด ปัดเศษเพื่อเตรียมสำหรับความแม่นยำที่สั้นลง การตัดสินแบบสลับกัน การตัดสินแบบสุ่ม สุ่ม
ลง(ไปทาง − )ขึ้น(ไปทาง + )มุ่งสู่ 0 ห่างจาก 0 ครึ่งทางลง(ไปทาง − )ครึ่งทางขึ้น(ไปทาง + )ครึ่งทางสู่ 0 ห่างจาก 0 ครึ่งหนึ่ง ครึ่งหนึ่งถึงเท่ากัน ครึ่งต่อคี่ เฉลี่ยเอสดีเฉลี่ยเอสดีเฉลี่ยเอสดี
+2.8 +2 +3 +2 +3 +3 +3 +3 +3 +3 +3 +2 +3 0 +3 0 +2.8 0.04
+2.5 +2 +2 +2 +2.505 0 +2.5 0.05 +2.5 0.05
+2.2 +2 +2 +2 +2 0 +2 0 +2.2 0.04
+1.8 +1 +2 +1 +2 +1 +1.8 0.04
+1.5 +1 +1 +1 +1.505 0 +1.5 0.05 +1.5 0.05
+1.2 +1 +1 +1 +1 0 +1 0 +1.2 0.04
+0.8 0 +1 0 +1 +0.8 0.04
+0.5 0 0 0 +0.505 0 +0.5 0.05 +0.5 0.05
+0.2 0 0 0 0 0 0 0 +0.2 0.04
-0.2 −1 0 −1 −1 -0.2 0.04
-0.5 −1 −1 −1 −0.495 0 -0.5 0.05 -0.5 0.05
-0.8 −1 −1 −1 −1 0 −1 0 -0.8 0.04
−1.2 −2 −1 −1 −2 −1.2 0.04
−1.5 −2 −2 −2 −1.495 0 −1.5 0.05 −1.5 0.05
−1.8 −2 -2 −2 −2 0 −2 0 −1.8 0.04
−2.2 −3 −2 −2 −3 −2 −2.2 0.04
-2.5 −3 −3 −3 −2.495 0 -2.5 0.05 -2.5 0.05
−2.8 −3 −3 −3 −3 0 −3 0 −2.8 0.04

การปัดเศษเป็นค่าอื่นๆ

การปัดเศษให้เป็นผลคูณที่กำหนด

การปัดเศษที่พบได้บ่อยที่สุดคือการปัดเศษให้เป็นจำนวนเต็ม หรือโดยทั่วไปแล้วคือการปัดเศษให้เป็นจำนวนเต็มที่เป็นผลคูณของค่าใดค่าหนึ่ง เช่น การปัดเศษให้เป็นทศนิยมของวินาที ร้อยส่วนของดอลลาร์ จำนวนเต็มที่เป็นผลคูณของ 1/2 หรือ 1/8 นิ้ว จำนวนเต็มสิบหรือจำนวนเต็มพัน เป็นต้น

โดยทั่วไป การปัดเศษจำนวนxให้เป็นจำนวนทวีคูณของค่าบวกm ที่กำหนดไว้ จะต้องดำเนินการตามขั้นตอนดังต่อไปนี้:

ตัวอย่างเช่น การปัดเศษx = 2.1784ดอลลาร์ ให้เป็นจำนวนเต็มเซนต์ (เช่น ให้เป็นจำนวนเต็มที่หารด้วย 0.01 ลงตัว) จะต้องคำนวณ2.1784 / 0.01 = 217.84จากนั้นปัดเศษเป็น 218 และสุดท้ายคำนวณ218 × 0.01 = 2.18

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

ค่าเพิ่มขึ้นmโดยปกติจะเป็นเศษส่วนจำกัดในระบบตัวเลข ใดก็ตาม ที่ใช้ในการแสดงตัวเลขนั้น สำหรับการแสดงผลต่อมนุษย์ มักหมายถึงระบบตัวเลขทศนิยม (นั่นคือmเป็นจำนวนเต็มคูณด้วยกำลังของ 10 เช่น 1/1000 หรือ 25/100) สำหรับค่ากลางที่จัดเก็บในคอมพิวเตอร์ดิจิทัล มักหมายถึงระบบตัวเลขไบนารี ( mเป็นจำนวนเต็มคูณด้วยกำลังของ 2)

ฟังก์ชันนามธรรม "round()" ที่มีอาร์กิวเมนต์เดียว ซึ่งส่งคืนค่าจำนวนเต็มจากค่าจริงใดๆ นั้น มีคำจำกัดความที่เป็นรูปธรรมที่แตกต่างกันอย่างน้อยสิบสองแบบ ซึ่งนำเสนอไว้ใน ส่วน การปัดเศษเป็นจำนวนเต็ม ฟังก์ชันนามธรรม "roundToMultiple()" ที่มีอาร์กิวเมนต์สองตัว ได้รับการนิยามอย่างเป็นทางการไว้ในที่นี้ แต่ในหลายกรณี ฟังก์ชันนี้ถูกใช้โดยปริยายด้วยค่าm = 1สำหรับค่าเพิ่มขึ้น และจากนั้นจะลดรูปเป็นฟังก์ชันนามธรรมที่มีอาร์กิวเมนต์เดียวที่เทียบเท่ากัน ซึ่งมีคำจำกัดความที่เป็นรูปธรรมที่แตกต่างกันอย่างน้อยสิบสองแบบเช่นกัน

การปัดเศษแบบลอการิทึม

การปัดเศษให้ได้กำลังที่กำหนด

การปัดเศษขึ้นกำลัง ที่กำหนด นั้นแตกต่างจากการปัดเศษขึ้นตัวคูณ ที่กำหนดอย่างมาก ตัวอย่างเช่น ในทางคอมพิวเตอร์มักจำเป็นต้องปัดเศษจำนวนขึ้นกำลังของ 2 ที่เป็นจำนวนเต็ม โดยทั่วไปแล้ว ขั้นตอนในการปัดเศษจำนวนบวกxขึ้นกำลังของจำนวนบวกbที่ไม่ใช่ 1 มีดังนี้:

ข้อควรระวังหลายประการที่ใช้กับการปัดเศษให้เป็นผลคูณ ก็สามารถนำมาใช้กับการปัดเศษให้เป็นผลยกได้เช่นกัน

ใน บันได เสียงโครมาติก "สิบสองโทน" ของดนตรี 3/2จะถูกปัดเศษเป็น 2 7/12 (คู่ห้า), 4/3จะถูกปัดเศษเป็น2 5/12 ( คู่สี่) , 5/4 จะถูกปัดเศษเป็น 2 4/12 ( คู่สามเมเจอร์) , 6/5 จะถูกปัดเศษเป็น 2 3/12 (คู่สามไมเนอร์ ) และ9/8 จะถูกปัดเศษเป็น2 2/12 ( คู่สามลด )

การปัดเศษตามมาตราส่วน

การปัดเศษแบบนี้ ซึ่งเรียกอีกอย่างว่าการปัดเศษตามมาตราส่วนลอการิทึมเป็นรูปแบบหนึ่งของการปัดเศษตามกำลังที่กำหนดการปัดเศษตามมาตราส่วนลอการิทึมทำได้โดยการหาค่าลอการิทึมของจำนวนนั้น แล้วทำการปัดเศษตามปกติไปยังค่าที่ใกล้เคียงที่สุดบนมาตราส่วนลอการิทึม

ตัวอย่างเช่น ตัวต้านทานจะถูกระบุค่าเป็นตัวเลขที่ต้องการบนมาตราส่วนลอการิทึม โดยเฉพาะอย่างยิ่งสำหรับตัวต้านทานที่มีความแม่นยำ 10% จะมีค่าระบุเป็น 100, 120, 150, 180, 220 เป็นต้น โดยปัดเศษให้เป็นจำนวนเต็มที่หารด้วย 10 ลงตัว (เช่น ตัวต้านทาน ซีรีส์ E12 ) หากคำนวณแล้วพบว่าต้องการตัวต้านทานขนาด 165 โอห์ม จะได้ว่าlog(150) = 2.176 , log(165) = 2.217และlog(180) = 2.255ค่าลอการิทึมของ 165 ใกล้เคียงกับค่าลอการิทึมของ 180 มากกว่า ดังนั้นตัวต้านทานขนาด 180 โอห์มจึงเป็นตัวเลือกแรกหากไม่มีปัจจัยอื่นใดมาพิจารณา

การที่ค่าx ∈ ( a , b )จะปัดเศษเป็นaหรือbนั้นขึ้นอยู่กับว่าค่ากำลังสองมากกว่าหรือน้อยกว่าผลคูณabหรือไม่ ในตัวอย่างตัวต้านทาน ค่า 165 จะปัดเศษเป็น 180 เพราะ165² = 27225มากกว่า150 × 180 = 27000

การปัดเศษจุดลอยตัว

ในการคำนวณเลขทศนิยมการปัดเศษมีจุดมุ่งหมายเพื่อเปลี่ยนค่าx ที่กำหนด ให้เป็นค่าyที่มีจำนวน หลัก สำคัญตามที่ระบุ กล่าวคือyควรเป็นผลคูณของจำนวนmซึ่งขึ้นอยู่กับขนาดของxโดยจำนวนmคือกำลังของฐาน (โดยปกติคือ 2 หรือ 10) ของการแสดงผลเลขทศนิยม

นอกเหนือจากรายละเอียดนี้แล้ว รูปแบบการปัดเศษทั้งหมดที่กล่าวถึงข้างต้นยังใช้ได้กับการปัดเศษจำนวนทศนิยมด้วยเช่นกัน อัลกอริทึมสำหรับการปัดเศษดังกล่าวได้นำเสนอไว้ใน ส่วน การปัดเศษแบบปรับขนาดด้านบนแล้ว แต่ใช้ตัวคูณปรับขนาดคงที่s = 1และฐานจำนวนเต็มb > 1

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

การปัดเศษให้เป็นเศษส่วนอย่างง่าย

ในบางบริบท การปัดเศษจำนวนx ที่กำหนด ให้เป็นเศษส่วนที่ "เรียบร้อย" นั้นเป็นสิ่งที่พึงปรารถนา กล่าวคือ เศษส่วนที่ใกล้เคียงที่สุดy = m / nซึ่งตัวเศษmและตัวส่วนnไม่เกินค่าสูงสุดที่กำหนด ปัญหานี้ค่อนข้างแตกต่างจากการปัดเศษค่าให้เป็นจำนวนหลักทศนิยมหรือเลขฐานสองที่กำหนด หรือให้เป็นพหุคูณของหน่วยm ที่กำหนด ปัญหานี้เกี่ยวข้องกับลำดับของ Farey , ต้นไม้ Stern–Brocotและเศษส่วนต่อเนื่อง

ปัดเศษให้เป็นค่าที่ใช้งานได้

โดยทั่วไปแล้ว ไม้แปรรูปกระดาษเขียน อุปกรณ์อิเล็กทรอนิกส์ และผลิตภัณฑ์อื่นๆ อีกมากมาย มักจะจำหน่ายในราคามาตรฐานเพียงไม่กี่ราคาเท่านั้น

ขั้นตอนการออกแบบหลายอย่างอธิบายวิธีการคำนวณค่าโดยประมาณ จากนั้น "ปัดเศษ" ให้เป็นขนาดมาตรฐานโดยใช้วลีเช่น "ปัดลงเป็นค่ามาตรฐานที่ใกล้ที่สุด" "ปัดขึ้นเป็นค่ามาตรฐานที่ใกล้ที่สุด" หรือ "ปัดเป็นค่ามาตรฐานที่ใกล้ที่สุด" [ 10 ] [ 11 ]

เมื่อชุดของค่าที่ต้องการมีระยะห่างเท่ากันบนมาตราส่วนลอการิทึม การเลือกค่าที่ต้องการ ที่ใกล้เคียงที่สุด กับค่าที่กำหนดใดๆ สามารถมองได้ว่าเป็นรูปแบบหนึ่งของการปัดเศษตามมาตราส่วนค่าที่ปัดเศษดังกล่าวสามารถคำนวณได้โดยตรง[ 12 ]

ถังแบบสุ่ม

กฎการปัดเศษทั่วไปสามารถแยกค่าต่างๆ ที่จุดแบ่งใดๆ ก็ได้ เช่น ใช้ในการจัดกลุ่มข้อมูล (data binning ) เครื่องมือที่เกี่ยวข้องซึ่งมีรูปแบบทางคณิตศาสตร์อย่างเป็นทางการคือลำดับป้ายบอกทาง (signpost sequences ) ซึ่งใช้แนวคิดเรื่องระยะทางที่นอกเหนือจากความแตกต่างแบบง่ายๆ ตัวอย่างเช่น ลำดับอาจปัดเศษเป็นจำนวนเต็มที่มี ข้อผิดพลาด สัมพัทธ์ (เปอร์เซ็นต์) น้อยที่สุด

การปัดเศษในบริบทอื่นๆ

การสุ่มตัวอย่างและการกระจายข้อผิดพลาด

เมื่อทำการแปลงสัญญาณต่อเนื่องเช่น คลื่นเสียง ให้เป็นสัญญาณดิจิทัล ผลโดยรวมของการวัดหลายๆ ครั้งมีความสำคัญมากกว่าความแม่นยำของการวัดแต่ละครั้ง ในสถานการณ์เช่นนี้มักใช้ เทคนิคการลด สัญญาณรบกวน (dithering ) และเทคนิคที่เกี่ยวข้องอย่างการกระจายข้อผิดพลาด (error diffusion ) เทคนิคที่เกี่ยวข้องอีกอย่างหนึ่งคือ การมอดูเลชั่นความกว้างพัลส์ ( pulse-width modulation ) ใช้ในการสร้างเอาต์พุตแบบอนาล็อกจากอุปกรณ์เฉื่อยโดยการส่งพัลส์พลังงานอย่างรวดเร็วด้วยรอบการทำงานที่แปรผันได้การมอดูเลชั่น เดลต้า-ซิกมา ( Delta-sigma modulation)มักใช้ในการแปลงระหว่างสัญญาณจากโลกแห่งความเป็นจริงและสัญญาณดิจิทัล ซึ่งช่วยให้สามารถควบคุมสถิติความถี่ของการควอนไทเซชั่นได้

การกระจายความคลาดเคลื่อนพยายามทำให้ความคลาดเคลื่อนโดยเฉลี่ยลดลงเหลือน้อยที่สุด เมื่อจัดการกับความลาดชันที่ไม่รุนแรงจากหนึ่งไปศูนย์ ผลลัพธ์จะเป็นศูนย์ในช่วงสองสามพจน์แรก จนกว่าผลรวมของความคลาดเคลื่อนและค่าปัจจุบันจะมากกว่า 0.5 ในกรณีนี้ ผลลัพธ์จะเป็น 1 และลบผลต่างออกจากความคลาดเคลื่อนที่เกิดขึ้นแล้วการกระจายความคลาดเคลื่อนแบบ Floyd–Steinbergเป็นวิธีการกระจายความคลาดเคลื่อนที่นิยมใช้ในการแปลงภาพเป็นดิจิทัล

ยกตัวอย่างแบบหนึ่งมิติ สมมติว่าตัวเลข0.9677 , 0.9204 , 0.7451และ0.3091ปรากฏเรียงกัน และแต่ละตัวเลขจะต้องปัดเศษให้เป็นจำนวนเต็มที่หารด้วย0.01 ลงตัว ในกรณีนี้ ผลรวมสะสม0.9677 , 1.8881 = 0.9677 + 0.9204 , 2.6332 = 0.9677 + 0.9204 + 0.7451และ2.9423 = 0.9677 + 0.9204 + 0.7451 + 0.3091แต่ละค่าจะถูกปัดเศษให้เป็นจำนวนเต็มที่หารด้วย0.01 ลงตัวได้แก่0.97 , 1.89 , 2.63และ2.94ค่าแรกและผลต่างของค่าที่อยู่ติดกันจะให้ค่าที่ปัดเศษตามที่ต้องการ: 0.97 , 0.92 = 1.89 − 0.97 , 0.74 = 2.63 − 1.89 , และ0.31 = 2.94 − 2.63

เลขคณิตมอนเตคาร์โล

การคำนวณแบบมอนเตคาร์โลเป็นเทคนิคในวิธีการมอนเตคาร์โลที่การปัดเศษจะสุ่มขึ้นหรือลง การปัดเศษแบบสุ่มสามารถใช้สำหรับการคำนวณแบบมอนเตคาร์โลได้ แต่โดยทั่วไปแล้ว การปัดเศษขึ้นหรือลงด้วยความน่าจะเป็นที่เท่ากันมักจะใช้บ่อยกว่า การรันซ้ำๆ จะให้การกระจายแบบสุ่มของผลลัพธ์ ซึ่งสามารถบ่งชี้ถึงความเสถียรของการคำนวณได้[ 13 ]

การคำนวณที่แม่นยำด้วยการปัดเศษทางคณิตศาสตร์

เราสามารถใช้การปัดเศษทางคณิตศาสตร์เพื่อประเมินค่าที่แน่นอนของฟังก์ชันที่มีโดเมนและเรนจ์เป็นจำนวนเต็มได้ ตัวอย่างเช่น ถ้าทราบว่าจำนวนเต็มnเป็นกำลังสองสมบูรณ์ เราสามารถคำนวณรากที่สองของ n ได้โดยการแปลงnเป็นค่าทศนิยมzคำนวณค่ารากที่สองโดยประมาณxของzด้วยค่าทศนิยม แล้วปัดเศษxให้เป็นจำนวนเต็มที่ใกล้ที่สุดyถ้าnไม่ใหญ่เกินไป ข้อผิดพลาดจากการปัดเศษทศนิยมในxจะน้อยกว่า 0.5 ดังนั้นค่าที่ปัดเศษyจะเป็นรากที่สองที่แน่นอนของnนี่คือเหตุผลหลักที่ว่าทำไมไม้บรรทัดคำนวณจึงสามารถใช้สำหรับการคำนวณที่แม่นยำได้

การปัดเศษสองครั้ง

การปัดเศษตัวเลขสองครั้งติดต่อกันไปยังระดับความแม่นยำที่แตกต่างกัน โดยความแม่นยำครั้งหลังจะหยาบกว่า ไม่รับประกันว่าจะให้ผลลัพธ์เดียวกันกับการปัดเศษเพียงครั้งเดียวไปยังความแม่นยำสุดท้าย ยกเว้นในกรณีของการปัดเศษแบบกำหนดทิศทาง[ nb 2 ]ตัวอย่างเช่น การปัดเศษ 9.46 ให้เป็นทศนิยมตำแหน่งที่ใกล้ที่สุดจะได้ 9.5 และจากนั้นจะได้ 10 เมื่อปัดเศษเป็นจำนวนเต็มที่ใกล้ที่สุดโดยใช้การปัดเศษครึ่งให้เป็นเลขคู่ แต่จะได้ 9 เมื่อปัดเศษโดยตรงโดยใช้วิธีเดียวกัน Borman และ Chatfield [ 14 ]กล่าวถึงผลกระทบของการปัดเศษสองครั้งเมื่อเปรียบเทียบข้อมูลที่ปัดเศษเป็นทศนิยมหนึ่งตำแหน่งกับขีดจำกัดข้อกำหนดที่แสดงโดยใช้จำนวนเต็ม

ในคดีMartinez v. AllstateและSendejo v. Farmersซึ่งฟ้องร้องระหว่างปี 1995 ถึง 1997 บริษัทประกันภัยโต้แย้งว่าการปัดเศษเบี้ยประกันภัยสองครั้งนั้นเป็นสิ่งที่อนุญาตได้และเป็นสิ่งที่จำเป็น ศาลสหรัฐฯ ตัดสินคัดค้านบริษัทประกันภัยและสั่งให้พวกเขานำกฎมาใช้เพื่อให้แน่ใจว่ามีการปัดเศษเพียงครั้งเดียว[ 15 ]

ภาษาคอมพิวเตอร์บางภาษาและ มาตรฐาน IEEE 754-2008กำหนดว่าในการคำนวณแบบตรงไปตรงมา ผลลัพธ์ไม่ควรถูกปัดเศษสองครั้ง ปัญหานี้เป็นปัญหาเฉพาะของ Java เนื่องจากได้รับการออกแบบให้ทำงานเหมือนกันบนเครื่องต่างๆ จึงต้องใช้เทคนิคการเขียนโปรแกรมพิเศษเพื่อให้บรรลุเป้าหมายนี้ด้วยจุดลอยตัวx87 [ 16 ] [ 17 ]ภาษา Java ได้รับการเปลี่ยนแปลงเพื่อให้สามารถแสดงผลลัพธ์ที่แตกต่างกันได้ในกรณีที่ความแตกต่างไม่สำคัญ และต้อง ใช้ตัวกำหนดคุณสมบัติ strictfpเมื่อผลลัพธ์ต้องสอดคล้องกันอย่างแม่นยำ จุดลอยตัวแบบเข้มงวดได้รับการคืนค่าใน Java 17 [ 18 ]

ในอัลกอริธึมบางตัว ผลลัพธ์ระดับกลางจะถูกคำนวณด้วยความแม่นยำที่สูงกว่า จากนั้นจะต้องปัดเศษให้ตรงกับความแม่นยำสุดท้าย การปัดเศษสองครั้งสามารถหลีกเลี่ยงได้โดยการเลือกการปัดเศษที่เหมาะสมสำหรับการคำนวณระดับกลาง ซึ่งประกอบด้วยการหลีกเลี่ยงการปัดเศษไปยังจุดกึ่งกลางสำหรับการปัดเศษขั้นสุดท้าย (ยกเว้นเมื่อจุดกึ่งกลางเป็นค่าที่แน่นอน) ในเลขคณิตไบนารี แนวคิดคือการปัดเศษผลลัพธ์เข้าหาศูนย์ และตั้งค่าบิตที่มีนัยสำคัญน้อยที่สุดเป็น 1 หากผลลัพธ์ที่ปัดเศษไม่ตรง การปัดเศษนี้เรียกว่า การปัดเศษ แบบเหนียว[ 19 ] หรือกล่าวอีกนัยหนึ่ง คือ การส่งคืนผลลัพธ์ระดับกลางเมื่อสามารถแสดงได้อย่างแม่นยำ และส่งคืนจำนวนจุดลอยตัวที่ใกล้ที่สุดที่มีนัยสำคัญเป็นเลขคี่ในกรณีอื่น นี่คือเหตุผลที่เรียกว่าการปัดเศษเป็นเลขคี่ [ 20 ] [ 21 ] การนำวิธีการนี้ไปใช้จริงสำหรับเลขคณิตไบนารีและทศนิยม จะถูกนำไปใช้เป็นการปัดเศษเพื่อเตรียมพร้อมสำหรับความแม่นยำที่สั้นลง

การปัดเศษเพื่อเตรียมพร้อมสำหรับความแม่นยำที่สั้นลง

โหมดการปัดเศษนี้ใช้เพื่อหลีกเลี่ยงผลลัพธ์ที่อาจผิดพลาดหลังจากการปัดเศษหลายครั้งสามารถทำได้โดยการปัดเศษทั้งหมด ยกเว้นการปัดเศษครั้งสุดท้าย โดยใช้การปัดเศษเพื่อเตรียมความแม่นยำที่สั้นกว่า ("RPSP") และเฉพาะการปัดเศษครั้งสุดท้ายเท่านั้นที่ใช้โหมดที่ร้องขอจากภายนอก

ในการคำนวณเลขฐานสิบ จะหลีกเลี่ยงตัวเลขหลักสุดท้ายที่เป็น 0 และ 5 เมื่อไม่สามารถแสดงค่าอินพุตได้อย่างแม่นยำ หากมีตัวเลือกระหว่างตัวเลขที่มีหลักที่มีค่าน้อยที่สุดเป็น 0 หรือ 1, 4 หรือ 5, 5 หรือ 6, 9 หรือ 0 ตัวเลขที่แตกต่างจาก 0 หรือ 5 จะถูกเลือก มิฉะนั้น การเลือกจะเป็นไปโดยพลการ IBM กำหนดว่าในกรณีหลัง ตัวเลขที่มีค่าน้อยกว่าจะถูกเลือก[ 22 ] [ 23 ] RPSP สามารถนำไปใช้กับขั้นตอนระหว่างการปัดเศษสองครั้งที่ต่อเนื่องกันได้ โดยมีค่าเพียงหลักเดียว (ตัวอย่างเช่น การปัดเศษเป็น 1/10 สามารถทำได้หลังจากปัดเศษเป็น 1/100) ตัวอย่างเช่น เมื่อปัดเศษเป็นจำนวนเต็ม

  • 20.0 ปัดเศษเป็น 20;
  • 20.01, 20.1, 20.9, 20.99, 21, 21.01, 21.9, 21.99 จะถูกปัดเศษเป็น 21 (เพื่อหลีกเลี่ยงเลข 0 ตัวสุดท้าย)
  • 22.0, 22.1, 22.9, 22.99 จะถูกปัดเศษเป็น 22;
  • 24.0, 24.1, 24.9, 24.99 จะถูกปัดเศษเป็น 24 (เพื่อหลีกเลี่ยงเลข 5 ตัวสุดท้าย)
  • 25.0 ปัดเศษเป็น 25;
  • 25.01 และ 25.1 จะถูกปัดเศษเป็น 26 (เพื่อหลีกเลี่ยงเลข 5 ตัวสุดท้าย)

ในตัวอย่างจากหัวข้อ " การปัดเศษสองครั้ง " การปัดเศษ 9.46 ให้เหลือทศนิยมหนึ่งตำแหน่งจะได้ 9.4 ซึ่งเมื่อปัดเศษกลับเป็นจำนวนเต็มจะได้ 9

ในเลขคณิตฐานสอง การปัดเศษนี้เรียกว่า "ปัดเศษเป็นเลขคี่" (อย่าสับสนกับ " ปัดเศษครึ่งเป็นเลขคี่ ") ตัวอย่างเช่น เมื่อปัดเศษเป็น 1/4 (0.01 ในเลขฐานสอง)

  • x = 2.0 ⇒ ผลลัพธ์คือ 2 (10.00 ในเลขฐานสอง)
  • 2.0 < x < 2.5 ⇒ ผลลัพธ์คือ 2.25 (10.01 ในระบบเลขฐานสอง)
  • x = 2.5 ⇒ ผลลัพธ์คือ 2.5 (10.10 ในระบบเลขฐานสอง)
  • 2.5 < x < 3.0 ⇒ ผลลัพธ์คือ 2.75 (10.11 ในระบบเลขฐานสอง)
  • x = 3.0 ⇒ ผลลัพธ์คือ 3 (11.00 ในระบบเลขฐานสอง)

เพื่อให้ได้ผลลัพธ์ที่ถูกต้องในการคำนวณเลขฐานสอง แต่ละขั้นตอนการปัดเศษจะต้องลบเลขฐานสองออกอย่างน้อย 2 หลัก มิฉะนั้นอาจได้ผลลัพธ์ที่ไม่ถูกต้อง ตัวอย่างเช่น

  • 3.125 RPSP เป็น 1/4 ⇒ ผลลัพธ์คือ 3.25
  • 3.25 RPSP หารด้วย 1/2 ⇒ ผลลัพธ์คือ 3.5
  • 3.5 ปัดเศษครึ่งให้เป็นเลขคู่ แล้วได้ 1 ⇒ ผลลัพธ์คือ 4 (ผิด)

หากลบขั้นตอนกลางที่ผิดพลาดออก การปัดเศษขั้นสุดท้ายให้เป็นจำนวนเต็มจะปัด 3.25 ให้เป็นค่าที่ถูกต้องคือ 3

RPSP ถูกนำไปใช้ในฮาร์ดแวร์ของ IBM zSeriesและpSeriesใน โมดูล Python "Decimal", โมดูล Tcl "math", แพ็กเกจ Haskell "decimal-arithmetic" และอาจรวมถึงโมดูลอื่นๆ โหมดนี้เรียกว่า ROUND_05UP หรือ round05up

ปัญหาของช่างทำโต๊ะ

วิลเลียม เอ็ม. คาฮานเป็นผู้บัญญัติศัพท์ "ภาวะกลืนไม่เข้าคายไม่ออกของผู้ทำตาราง" (The Table-Maker's Dilemma) สำหรับต้นทุนที่ไม่ทราบแน่ชัดของการปัดเศษฟังก์ชันอดิศัย :

ไม่มีใครรู้ว่าการคำนวณy wที่ปัดเศษอย่างถูกต้องสำหรับอาร์กิวเมนต์จุดลอยตัวสองตัวที่ไม่เกิดการโอเวอร์โฟลว์/อันเดอร์โฟลว์นั้นจะมีค่าใช้จ่ายเท่าใด ในทางกลับกัน ไลบรารีคณิตศาสตร์ที่มีชื่อเสียงจะคำนวณฟังก์ชันอดิศัย พื้นฐาน ส่วนใหญ่ภายในเวลามากกว่าครึ่งulp เล็กน้อย และเกือบทุกครั้งภายในหนึ่ง ulp ทำไม y wจึงไม่สามารถปัดเศษภายในครึ่ง ulp ได้เหมือนกับ SQRT? เพราะไม่มีใครรู้ว่าการคำนวณนั้นจะมีค่าใช้จ่ายเท่าใด... ไม่มีวิธีทั่วไปที่จะคาดการณ์ได้ว่าจะต้องมีการทดเลขเพิ่มกี่หลักเพื่อคำนวณนิพจน์อดิศัยและปัดเศษให้ถูกต้องตามจำนวนหลักที่กำหนดไว้ล่วงหน้า แม้แต่ข้อเท็จจริง (ถ้าเป็นจริง) ที่ว่าจำนวนหลักเพิ่มที่จำกัดจะเพียงพอในที่สุดอาจเป็นทฤษฎีบทที่ลึกซึ้ง[ 24 ]

มาตรฐานเลขทศนิยมIEEE 754 รับประกันว่าการบวก การลบ การคูณ การหาร การ คูณ-บวกแบบผสม การหาค่ารากที่สอง และการหาเศษเหลือของเลขทศนิยม จะให้ผลลัพธ์ที่ปัดเศษอย่างถูกต้องตามการดำเนินการที่มีความแม่นยำอนันต์ อย่างไรก็ตาม มาตรฐานปี 1985 ไม่ได้ให้การรับประกันเช่นนี้สำหรับฟังก์ชันที่ซับซ้อนกว่า และโดยทั่วไปแล้วความแม่นยำจะอยู่ที่ระดับบิตสุดท้ายเท่านั้น แต่มาตรฐานปี 2008 รับประกันว่าการใช้งานที่สอดคล้องกับมาตรฐานจะให้ผลลัพธ์ที่ปัดเศษอย่างถูกต้องตามโหมดการปัดเศษที่ใช้งานอยู่ อย่างไรก็ตาม การใช้งานฟังก์ชันเหล่านั้นเป็นทางเลือก

การใช้ทฤษฎีบท Gelfond–Schneiderและทฤษฎีบท Lindemann–Weierstrassทำให้สามารถพิสูจน์ได้ว่าฟังก์ชันพื้นฐานมาตรฐานหลายฟังก์ชันให้ ผลลัพธ์ ที่เป็นอดิศัยยกเว้นในบางกรณีที่รู้จักกันดี ดังนั้นจากมุมมองทางทฤษฎีแล้ว การปัดเศษฟังก์ชันดังกล่าวให้ถูกต้องจึงเป็นไปได้เสมอ อย่างไรก็ตาม สำหรับการใช้งานฟังก์ชันดังกล่าว การกำหนดขีดจำกัดสำหรับความแม่นยำที่กำหนดว่าต้องคำนวณผลลัพธ์ที่แม่นยำเพียงใดก่อนที่จะรับประกันผลลัพธ์ที่ปัดเศษอย่างถูกต้อง อาจต้องใช้เวลาในการคำนวณมากหรืออาจทำไม่ได้[ 25 ]ในทางปฏิบัติ เมื่อไม่ทราบขีดจำกัดนี้ (หรือทราบเพียงขอบเขตที่กว้างมาก) จะต้องมีการตัดสินใจบางอย่างในการใช้งาน (ดูด้านล่าง) แต่ตามแบบจำลองความน่าจะเป็น การปัดเศษที่ถูกต้องสามารถทำได้ด้วยความน่าจะเป็นที่สูงมากเมื่อใช้ความแม่นยำระดับกลางไม่เกินสองเท่าของจำนวนหลักของรูปแบบเป้าหมายบวกกับค่าคงที่เล็กน้อย (หลังจากพิจารณากรณีพิเศษแล้ว)

แพ็กเกจการเขียนโปรแกรมบางแพ็กเกจมีการปัดเศษที่ถูกต้อง แพ็กเกจ GNU MPFRให้ผลลัพธ์ที่มีความแม่นยำสูงโดยมีการปัดเศษอย่างถูกต้อง ไลบรารีอื่นๆ บางตัวก็มีฟังก์ชันพื้นฐานที่ปัดเศษอย่างถูกต้องในความแม่นยำสองเท่าตามมาตรฐาน IEEE 754 (binary64):

  • ml4jของIBMซึ่งย่อมาจากMathematical Library for JavaเขียนโดยAbraham Zivและ Moshe Olshansky ในปี 1999 ปัดเศษให้ใกล้เคียงที่สุดเท่านั้น[ 26 ] [ 27 ]ไลบรารีนี้อ้างว่าพกพาได้ แต่มีเพียงไบนารีสำหรับPowerPC / AIX , SPARC / Solarisและx86 / Windows NT เท่านั้น ตามเอกสารประกอบ ไลบรารีนี้ใช้ขั้นตอนแรกที่มีความแม่นยำสูงกว่าความแม่นยำสองเท่าเล็กน้อย ขั้นตอนที่สองใช้การคำนวณเลขคณิตแบบ double-doubleและขั้นตอนที่สามมีความแม่นยำ 768 บิตโดยใช้อาร์เรย์ของตัวเลขจุดลอยตัวความแม่นยำสองเท่า IEEE 754
  • ไลบรารีคณิตศาสตร์แบบพกพาที่แม่นยำของ IBM (เรียกย่อว่า APMathLib หรือ MathLib) [ 28 ] [ 29 ]หรือที่เรียกว่า libultim [ 30 ]สำหรับการปัดเศษให้ใกล้เคียงที่สุดเท่านั้น ไลบรารีนี้ใช้ความแม่นยำในการทำงานสูงสุด 768 บิต มันถูกรวมอยู่ในไลบรารี GNU Cในปี 2001 [ 31 ]แต่ "เส้นทางช้า" (ที่ให้การปัดเศษที่ถูกต้อง) ถูกลบออกตั้งแต่ปี 2018 ถึง 2021
  • CRlibm ซึ่งเขียนโดยทีม Arénaire เก่า (LIP, ENS Lyon ) เผยแพร่ครั้งแรกในปี 2546 [ 32 ]รองรับโหมดการปัดเศษ 4 แบบและได้รับการพิสูจน์โดยใช้ความรู้เกี่ยวกับกรณีที่ยากที่สุดในการปัดเศษ[ 33 ] [ 34 ]มีประสิทธิภาพมากกว่า IBM MathLib [ 35 ]ต่อมาได้รับการพัฒนาเป็น Metalibm (2014) ซึ่งทำให้การพิสูจน์อย่างเป็นทางการเป็นไปโดยอัตโนมัติ[ 36 ]
  • libmcr ของSun Microsystems ในปี 2004 ในโหมดการปัดเศษ 4 แบบ [ 37 ] [ 38 ]สำหรับกรณีที่ยาก ไลบรารีนี้ยังใช้ความแม่นยำหลายเท่า และจำนวนคำจะเพิ่มขึ้น 2 ทุกครั้งที่เกิดปัญหา Table-maker's dilemma (โดยมีพฤติกรรมที่ไม่แน่นอนในกรณีที่ไม่น่าเป็นไปได้มากที่ถึงขีดจำกัดบางอย่างของเครื่อง)
  • โครงการ CORE-MATH (2022) จัดเตรียมฟังก์ชันที่ปัดเศษอย่างถูกต้องบางฟังก์ชันในโหมดการปัดเศษ 4 โหมดสำหรับ โปรเซสเซอร์ x86-64พิสูจน์โดยใช้ความรู้เกี่ยวกับกรณีที่ปัดเศษยากที่สุด[ 39 ] [ 35 ]
  • LLVM libc มีฟังก์ชันปัดเศษที่ถูกต้องบางฟังก์ชันในโหมดปัดเศษทั้ง 4 โหมด[ 40 ]

มีจำนวนที่คำนวณได้บางจำนวนซึ่งไม่สามารถหาค่าปัดเศษได้เลย ไม่ว่าจะคำนวณกี่หลักก็ตาม ไม่สามารถยกตัวอย่างเฉพาะเจาะจงได้ แต่เป็นผลมาจากความไม่สามารถตัดสินได้ของปัญหาการหยุดทำงานตัวอย่างเช่น หากสมมติฐานของโกลด์บัคเป็นจริงแต่พิสูจน์ไม่ได้ผลลัพธ์ของการปัดเศษค่าต่อไปนี้nขึ้นเป็นจำนวนเต็มถัดไปจะไม่สามารถหาได้: n = 1 + 10 kโดยที่kคือจำนวนคู่ตัวแรกที่มากกว่า 4 ซึ่งไม่ใช่ผลรวมของจำนวนเฉพาะสองตัว หรือn = 1 ถ้าไม่มีจำนวนดังกล่าว ผลลัพธ์ของการปัดเศษจะเป็น 2 ถ้ามีจำนวนk ดัง กล่าวอยู่ และเป็น 1 ถ้าไม่มี อย่างไรก็ตาม ค่าก่อนการปัดเศษสามารถประมาณได้ด้วยความแม่นยำใดๆ ก็ตาม แม้ว่าสมมติฐานจะพิสูจน์ไม่ได้ก็ตาม

การโต้ตอบกับการค้นหาสตริง

การปัดเศษอาจส่งผลเสียต่อการค้นหาตัวเลขในสตริง ตัวอย่างเช่นค่า πที่ปัดเศษเป็นสี่หลักคือ "3.1416" แต่การค้นหาสตริงนี้โดยตรงจะไม่พบ "3.14159" หรือค่าπ อื่นๆ ที่ปัดเศษมากกว่าสี่หลัก ในทางตรงกันข้าม การตัดทอนจะไม่ประสบปัญหาดังกล่าว ตัวอย่างเช่น การค้นหาสตริง "3.1415" ซึ่งเป็นค่า πที่ตัดทอนเหลือสี่หลัก จะพบค่าπที่ตัดทอนเหลือมากกว่าสี่หลัก

ประวัติศาสตร์

แนวคิดเรื่องการปัดเศษนั้นมีมานานแล้ว อาจจะเก่าแก่กว่าแนวคิดเรื่องการหารเสียอีกแผ่นดินเหนียวโบราณบางแผ่นที่พบในเมโสโปเต เมีย มีตารางที่มีค่าปัดเศษของส่วนกลับและรากที่สองในฐาน 60 [ 41 ] การประมาณค่าปัดเศษของπความยาวของปี และความยาวของเดือนก็มีมานานแล้วเช่นกัน ดูตัวอย่าง ในฐาน 60

วิธีการ ปัดเศษครึ่งให้เป็นเลขคู่ได้รับการใช้เป็นมาตรฐานอเมริกัน Z25.1 และ มาตรฐาน ASTM E-29 ตั้งแต่ปี 1940 [ 42 ]ที่มาของคำว่าการปัดเศษแบบไม่ลำเอียงและการปัดเศษแบบนักสถิตินั้นค่อนข้างชัดเจน ในหนังสือProbability and Theory of Errors ฉบับที่สี่ ปี 1906 โรเบิร์ต ซิมป์สัน วูดเวิร์ดเรียกสิ่งนี้ว่า "กฎของคอมพิวเตอร์" [ 43 ]ซึ่งบ่งชี้ว่าในขณะนั้นมีการใช้กันอย่างแพร่หลายโดยนักคำนวณที่เป็นมนุษย์ซึ่งคำนวณตารางทางคณิตศาสตร์ ตัวอย่างเช่น มีการแนะนำไว้ใน หนังสือ Logarithmic and Other Mathematical Tablesของไซมอน นิวคอม บ์ ประมาณปี 1882 [ 44 ] หนังสือ Theory of Measurementsปี 1916 ของลูเซียส ทัตเทิลเรียกมันว่า "กฎที่ได้รับการยอมรับอย่างเป็นสากล" สำหรับการบันทึกการวัดทางกายภาพ[ 45 ]เชอร์ชิลล์ ไอเซนฮาร์ตระบุว่าการปฏิบัตินี้ "ได้รับการยอมรับอย่างดี" แล้วในการวิเคราะห์ข้อมูลในช่วงทศวรรษ 1940 [ 46 ]

ที่มาของคำว่าการปัดเศษของธนาคารยังคงคลุมเครือ หากวิธีการปัดเศษนี้เคยเป็นมาตรฐานในการธนาคาร หลักฐานก็พิสูจน์ได้ว่าหาได้ยากมาก ในทางตรงกันข้าม ส่วนที่ 2 ของรายงานคณะกรรมาธิการยุโรปเรื่องการนำเงินยูโรมาใช้และการปัดเศษจำนวนเงิน[ 47 ]ชี้ให้เห็นว่าก่อนหน้านี้ไม่มีแนวทางมาตรฐานในการปัดเศษในการธนาคาร และระบุว่าจำนวนเงิน "ครึ่งทาง" ควรปัดขึ้น

จนกระทั่งถึงช่วงทศวรรษ 1980 วิธีการปัดเศษที่ใช้ในการคำนวณเลขทศนิยมมักถูกกำหนดโดยฮาร์ดแวร์ มีเอกสารอธิบายที่ไม่ดี ไม่สม่ำเสมอ และแตกต่างกันไปตามแต่ละยี่ห้อและรุ่นของคอมพิวเตอร์ สถานการณ์นี้เปลี่ยนไปหลังจากที่มาตรฐานเลขทศนิยม IEEE 754 ได้รับการยอมรับจากผู้ผลิตคอมพิวเตอร์ส่วนใหญ่ มาตรฐานนี้อนุญาตให้ผู้ใช้เลือกโหมดการปัดเศษได้หลายแบบ และในแต่ละกรณีจะระบุอย่างแม่นยำว่าควรปัดเศษผลลัพธ์อย่างไร คุณสมบัติเหล่านี้ทำให้การคำนวณเชิงตัวเลขคาดการณ์ได้ง่ายขึ้นและไม่ขึ้นอยู่กับเครื่องคอมพิวเตอร์ และทำให้สามารถใช้งานการคำนวณเลขช่วงได้ อย่างมีประสิทธิภาพและสม่ำเสมอ

ปัจจุบัน งานวิจัยจำนวนมากมักจะปัดเศษเป็นทวีคูณของ 5 หรือ 2 ตัวอย่างเช่นJörg Batenใช้การเรียงอายุแบบกลุ่มในงานวิจัยหลายชิ้นเพื่อประเมินระดับความรู้ทางคณิตศาสตร์ของประชากรโบราณ เขาคิดค้นดัชนี ABCCซึ่งทำให้สามารถเปรียบเทียบความรู้ทางคณิตศาสตร์ ระหว่างภูมิภาคได้โดยไม่ต้องมีแหล่งข้อมูลทางประวัติศาสตร์ใดๆ ที่ วัดความรู้ทางคณิตศาสตร์ของประชากร[ 48 ]

ฟังก์ชันการปัดเศษในภาษาโปรแกรม

ภาษาโปรแกรมส่วนใหญ่มีฟังก์ชันหรือไวยากรณ์พิเศษสำหรับการปัดเศษจำนวนทศนิยมในรูปแบบต่างๆ ภาษาโปรแกรมเชิงตัวเลขรุ่นแรกๆ เช่นFortranและCจะมีเพียงวิธีเดียว ซึ่งโดยปกติคือการตัดทิ้ง (เข้าหาศูนย์) วิธีเริ่มต้นนี้อาจถูกใช้โดยปริยายในบางบริบท เช่น เมื่อกำหนดค่าจำนวนทศนิยมให้กับตัวแปรจำนวนเต็ม หรือใช้จำนวนทศนิยมเป็นดัชนีของอาร์เรย์การปัดเศษแบบอื่นๆ ต้องเขียนโปรแกรมอย่างชัดเจน ตัวอย่างเช่น การปัดเศษจำนวนบวกให้เป็นจำนวนเต็มที่ใกล้ที่สุดสามารถทำได้โดยการบวก 0.5 แล้วตัดทิ้ง

อย่างไรก็ตาม ในช่วงหลายทศวรรษที่ผ่านมา ไวยากรณ์และไลบรารี มาตรฐาน ของภาษาโปรแกรมส่วนใหญ่ได้จัดเตรียมฟังก์ชันการปัดเศษพื้นฐานอย่างน้อยสี่ฟังก์ชัน (ปัดขึ้น ปัดลง ปัดเข้าหาจำนวนที่ใกล้เคียงที่สุด และปัดเข้าหาศูนย์) วิธีการแก้ปัญหาค่าเท่ากันอาจแตกต่างกันไปขึ้นอยู่กับภาษาและเวอร์ชัน หรืออาจเลือกได้โดยโปรแกรมเมอร์ ภาษาโปรแกรมหลายภาษาปฏิบัติตามมาตรฐานจุดลอยตัว IEEE 754 และกำหนดฟังก์ชันเหล่านี้ให้รับ อาร์กิวเมนต์เป็นเลขทศนิยมแบบ ความแม่นยำสองเท่าและส่งคืนผลลัพธ์ที่มีชนิดเดียวกัน ซึ่งอาจแปลงเป็นจำนวนเต็มได้หากจำเป็น วิธีนี้อาจหลีกเลี่ยงการโอเวอร์โฟลว์ ที่ไม่จำเป็นได้ เนื่องจากชนิดข้อมูลจุดลอยตัวมีช่วงที่กว้างกว่าชนิดข้อมูลจำนวนเต็ม ภาษาบางภาษา เช่นPHPมีฟังก์ชันที่ปัดเศษค่าให้เหลือจำนวนหลักทศนิยมที่กำหนด (เช่น จาก 4321.5678 เป็น 4321.57 หรือ 4300) นอกจากนี้ ภาษาโปรแกรมหลายภาษายังมี ฟังก์ชัน printfหรือฟังก์ชันจัดรูปแบบสตริงที่คล้ายกัน ซึ่งช่วยให้สามารถแปลงเลขทศนิยมเป็นสตริงที่ปัดเศษตามจำนวนหลักทศนิยมที่ผู้ใช้กำหนด ( ความแม่นยำ ) ได้ ในทางกลับกัน การตัดทิ้ง (ปัดเศษเป็นศูนย์) ยังคงเป็นวิธีการปัดเศษเริ่มต้นที่ใช้กันในหลายภาษา โดยเฉพาะอย่างยิ่งสำหรับการหารจำนวนเต็มสองจำนวน

ในทางตรงกันข้ามCSSและSVGไม่ได้กำหนดความแม่นยำสูงสุดเฉพาะสำหรับตัวเลขและการวัดใดๆ ซึ่งพวกมันจะจัดการและเปิดเผยในDOMและใน อินเทอร์เฟซ IDL ของพวกมัน เป็นสตริงราวกับว่ามีความแม่นยำอนันต์และไม่แยกแยะระหว่างจำนวนเต็มและค่าจุดลอยตัว อย่างไรก็ตาม การใช้งานของภาษาเหล่านี้โดยทั่วไปจะแปลงตัวเลขเหล่านี้เป็นค่าจุดลอยตัวความแม่นยำสองเท่า IEEE 754 ก่อนที่จะเปิดเผยตัวเลขที่คำนวณได้ด้วยความแม่นยำที่จำกัด (โดยเฉพาะอย่างยิ่งภายใน การผูกอินเทอร์เฟซ JavaScriptหรือECMAScript [ 49 ] มาตรฐาน )

มาตรฐานการปัดเศษอื่นๆ

บางสาขาวิชาหรือสถาบันได้ออกมาตรฐานหรือข้อกำหนดเกี่ยวกับการปัดเศษตัวเลข

การสังเกตการณ์สภาพอากาศของสหรัฐอเมริกา

ในแนวทางที่ออกในช่วงกลางปี ​​1966 [ 50 ]สำนักงาน ประสานงานของรัฐบาลกลาง สหรัฐฯด้านอุตุนิยมวิทยาได้กำหนดว่าข้อมูลสภาพอากาศควรปัดเศษให้เป็นจำนวนเต็มที่ใกล้ที่สุด โดยใช้กฎการ "ปัดขึ้นครึ่งหนึ่ง" ในกรณีที่มีค่าเท่ากัน ตัวอย่างเช่น 1.5 เมื่อปัดเศษเป็นจำนวนเต็มควรเป็น 2 และ −1.5 ควรเป็น −1 ก่อนหน้านั้น กฎการตัดสินในกรณีที่มีค่าเท่ากันคือ "ปัดเศษออกจากศูนย์ครึ่งหนึ่ง"

ศูนย์ลบในทางอุตุนิยมวิทยา

นักอุตุนิยมวิทยาบางคนอาจเขียน "−0" เพื่อระบุอุณหภูมิระหว่าง 0.0 ถึง −0.5 องศา (ไม่รวมค่านี้) ซึ่งปัดเศษเป็นจำนวนเต็ม การใช้สัญลักษณ์นี้หมายถึงการใช้เครื่องหมายลบเมื่อพิจารณาว่าเครื่องหมายลบมีความสำคัญ ไม่ว่าขนาดของค่าลบจะน้อยเพียงใดก็ตาม ตัวอย่างเช่น เมื่อปัดเศษอุณหภูมิใน มาตราส่วน เซลเซียสซึ่งต่ำกว่าศูนย์หมายถึงจุดเยือกแข็ง

ค่าศูนย์ลบในการคำนวณ

การแสดงผลตัวเลขด้วยคอมพิวเตอร์บางรูปแบบ รวมถึงการแสดงผลแบบจุดลอยตัวจะแยกความแตกต่างระหว่าง0 (หรือ+0 ) และ−0ดังนั้น การปัดเศษจากจำนวนลบไป เป็น 0อาจปัดไปเป็น−0แทนที่จะเป็น +0

ดูเพิ่มเติม

หมายเหตุ

  1. ^สิ่งนี้จำเป็น เช่น [1] สำหรับการจัดสรรที่นั่งซึ่งดำเนินการโดยวิธีเศษเหลือที่ใหญ่ที่สุด เช่น ดูคณิตศาสตร์ของการจัดสรรและ [2] สำหรับการกระจายภาษีมูลค่าเพิ่ม ทั้งหมด ของใบแจ้งหนี้ไปยังรายการต่างๆ)
  2. ^กรณีที่การปัดเศษสองครั้งให้ค่าเท่ากับการปัดเศษโดยตรงให้ได้ความแม่นยำสุดท้ายเสมอ คือเมื่อฐานเป็นเลขคี่
  • ไวส์สไตน์, เอริค ดับเบิลยู. "การปัดเศษ" . แมธเวิลด์ .
  • บทนำเกี่ยวกับอัลกอริธึมการปัดเศษแบบต่างๆที่เข้าใจง่ายสำหรับบุคคลทั่วไป แต่มีประโยชน์อย่างยิ่งสำหรับผู้ที่ศึกษาด้านวิทยาการคอมพิวเตอร์และอิเล็กทรอนิกส์
  • วิธีใช้งานขั้นตอนการปัดเศษแบบกำหนดเองของ Microsoft (ใช้งานไม่ได้)
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Rounding&oldid=1356189002 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การปัดเศษ

การปัดเศษ หรือ การปัดลง คือกระบวนการปรับ ตัวเลข ให้ เป็น ค่า โดยประมาณ ที่สะดวกกว่า โดยมักจะมีรูปแบบที่สั้นกว่าหรือเรียบง่ายกว่า ตัวอย่างเช่น การแทนที่ 23.4476 ดอลลาร์ด้วย 23.

การปัดเศษเป็นจำนวนเต็ม

รูปแบบพื้นฐานที่สุดของการปัดเศษคือการแทนที่ตัวเลขใดๆ ด้วยจำนวนเต็ม โหมดการปัดเศษทั้งหมดต่อไปนี้เป็นการนำขั้นตอน "round()" ที่มีอาร์กิวเมนต์เดียวมาใช้ในรูปแบบที่เป็นรูปธรรม ฟังก์ชันเหล่านี้เป็นฟังก์ชันที่แท้จริง (ยกเว้นฟังก์ชันที่ใช้ค่าสุ่ม)

การปัดเศษแบบกำหนดทิศทางให้เป็นจำนวนเต็ม

วิธีการทั้งสี่นี้เรียกว่า การปัดเศษแบบมีทิศทางไปยังจำนวนเต็ม เนื่องจากค่าที่ปัดจากจำนวนเดิม x ไปยังค่าที่ปัดแล้ว y นั้นมีทิศทางเข้าหาหรือออกจากค่าจำกัดเดียวกัน (0, +∞ หรือ −∞ ) การปัดเศษแบบมีทิศทางใช้ใน เลขคณิตช่วง และมักจำเป็นในการคำนวณทางการเงิน

ปัดเศษให้เป็นจำนวนเต็มที่ใกล้ที่สุด

วิธีการทั้งหกนี้เรียกว่า การปัดเศษให้เป็นจำนวนเต็มที่ใกล้ที่สุด การปัดเศษจำนวน x ให้เป็นจำนวนเต็มที่ใกล้ที่สุดนั้น จำเป็นต้องมีกฎการแก้ปัญหาในกรณีที่ x อยู่กึ่งกลางระหว่างจำนวนเต็มสองจำนวนพอดี นั่นคือ เมื่อส่วนที่เป็นเศษส่วนของ x มีค่าเท่ากับ 0.5 พอดี