ทำไมยอดหารบิลร่วมกันถึงไม่ลงตัว
ยอดร่วมกันที่ไม่ลงตัวเกือบทุกครั้งมาจากหนึ่งในสี่สาเหตุ เศษปัดสตางค์ สกุลเงินที่สอง บิลที่ถูกแก้ไข หรือสมาชิกที่ออกไป และมีเพียงอย่างแรกเท่านั้นที่เป็นเรื่องเลข
คุณกำลังดูยอดของกลุ่มอยู่ และมันคลาดเคลื่อน อาจจะแค่ไม่กี่สตางค์ อาจจะทั้งบิล คำถามที่ซ่อนอยู่นั้นเงียบแต่เป็นจริง แอปผิด หรือว่าคุณผิดกันแน่?
นี่คือคำตอบที่ใจเย็น เมื่อคุณหารบิลกับคนอื่น ยอดที่ไม่ลงตัวเกือบทุกครั้งมาจากหนึ่งในสี่สาเหตุ และมีเพียงอย่างเดียวเท่านั้นที่เป็นเรื่องเลข อีกสามอย่างคือสกุลเงิน การแก้ไข และคนที่ออกไป ระบุว่าคุณเจอสาเหตุใด แล้วการแก้ก็จะเลิกเป็นเรื่องลึกลับ
สี่สาเหตุ
เริ่มจากรูปร่างของปัญหา ยอดร่วมกันคือผลรวมสะสมของใครจ่ายและใครค้าง มันควรรวมกันได้ศูนย์ทั้งกลุ่ม ทุกบาทที่คนหนึ่งได้รับคือทุกบาทที่อีกคนค้างอยู่ เมื่อมันไม่เป็นเช่นนั้น แปลว่ามีบางอย่างเข้ามาในผลรวมที่ผลรวมนั้นรองรับไม่ได้
แล้วทำไมการหารบิลถึงไม่ลงตัว? ปกติมาจากหนึ่งในสี่สาเหตุ เศษสตางค์ไปตกในที่ที่ไม่คาดคิดเมื่อบิลหารไม่ลงตัว สองสกุลเงินถูกนำมารวมกันราวกับเป็นสกุลเดียว
บิลเก่าถูกเปลี่ยนหลังจากที่ทุกคนจ่ายไปแล้ว หรือมีคนออกจากกลุ่มทั้งที่ยังค้างเงิน สามในสี่อย่างนั้นไม่เกี่ยวกับการคำนวณของคุณเลย หากต้องการภาพรวมที่กว้างขึ้นว่ากลุ่มเคลียร์หนี้กันจริงอย่างไร อ่านบทวิเคราะห์ของเราเรื่อง การเคลียร์ยอดในกลุ่ม
ตารางนี้ระบุแต่ละสาเหตุหนึ่งครั้ง อาการที่ปรากฏ และวิธีแก้ ทุกอย่างหลังจากนี้คือฉบับเต็ม
สี่สาเหตุที่ทำให้ยอดร่วมกันไม่ลงตัว
| สาเหตุ | อาการที่ปรากฏ | วิธีแก้ |
|---|---|---|
| การปัดเศษ | ยอดคลาดเคลื่อนไปหนึ่งหรือสองสตางค์ ไม่เกินนั้น | กฎที่แน่นอนซึ่งส่งเศษสตางค์ไปที่เดิมทุกครั้ง |
| สกุลเงิน | ยอดคลาดเคลื่อนทั้งจำนวน หรืออ่านออกมาเป็นตัวเลขแปลกๆ ตัวเดียว | แยกยอดของแต่ละสกุลเงินไว้ และไม่รวมข้ามสกุลกัน |
| การแก้ไข | ยอดกระโดดหลังจากบิลเก่าถูกเปลี่ยน | คำนวณส่วนหารของบิลใหม่และบันทึกส่วนต่างลงในประวัติ |
| มีคนออกไป | ยอดไม่ยอมลงเป็นศูนย์ไม่ว่าจะทำอย่างไร | ตัดสินใจว่าใครจะรับหรือยกหนี้ส่วนของคนที่ออกไป แล้วบันทึกไว้ |
การปัดเศษ เศษสตางค์ และเหตุที่มันต้องแน่นอน
นี่คือตัวอย่าง และทุกตัวเลขในนั้นคุณคำนวณตามได้ Lucas Aiko และ Sofia ออกไปกินข้าว มื้อค่ำราคา ฿1,000.00 และหารเท่ากัน ฿1,000.00 หารสามได้ ฿333.3333 ไปเรื่อยๆ ไม่มีสกุลเงินใดจ่ายได้ ส่วนหารจึงกลายเป็น ฿333.33 ฿333.33 และ ฿333.34
ลองบวกกลับ ฿333.33 บวก ฿333.33 บวก ฿333.34 ได้ ฿1,000.00 พอดี ส่วนหารทั้งสามซื่อตรง มีอยู่ส่วนหนึ่งที่มากกว่าอีกหนึ่งสตางค์
เศษสตางค์นั้นคือทั้งปัญหาในรูปย่อ ต้องมีใครสักคนแบกมันไว้ นี่คือการปัดเศษของค่าใช้จ่ายร่วมกัน และมันมีหน้าที่เดียว คือวางเศษสตางค์ไว้ที่ที่แน่นอน ไม่ใช่ที่สุ่มไปมา หากแอปกำหนดใหม่ทุกครั้ง มื้อค่ำเดียวกันอาจให้ ฿333.34 กับ Aiko วันนี้ และ ฿333.34 กับ Sofia พรุ่งนี้ แล้วยอดก็จะแกว่งไปหนึ่งสตางค์โดยไม่มีเหตุผลที่มองเห็น
เราจึงทำให้กฎแน่นอน เศษสตางค์ไปที่ผู้จ่ายทุกครั้ง Lucas เป็นคนจ่าย Lucas จึงแบก ฿333.34 และอีกสองคนแบกคนละ ฿333.33 Lucas ได้รับคืน ฿1,000.00 ลบส่วนของตัวเอง ฿333.34 เท่ากับ ฿666.66
Aiko ค้าง ฿333.33 Sofia ค้าง ฿333.33 ฿333.33 บวก ฿333.33 ได้ ฿666.66 ทั้งกลุ่มรวมกันได้ศูนย์ การปัดเศษใช้ทศนิยมสองตำแหน่งของเงินบาท ซึ่งเป็นหน่วยย่อยที่กำหนดไว้ในมาตรฐานสกุลเงินสากล ISO 4217 ส่วนการเลือกยกเศษสตางค์ให้ผู้จ่ายเป็นของเรา และข้อดีเดียวของมันคือไม่เคยเปลี่ยน
เครื่องคำนวณหารบิลออนไลน์ทำการหารนี้สำหรับมื้อค่ำเดียวได้ ส่วนที่ยากกว่าคือทำแบบเดียวกันให้ครบร้อยครั้ง ซึ่งก็เป็นความต่างที่เราใส่ใจในเรื่อง การหารบิลร้านอาหารอย่างเป็นธรรม นักบัญชีถกกันมานานว่ากฎใดเป็นธรรมที่สุด ค่าเริ่มต้นที่ใช้กันทั่วไปในการคำนวณคือปัดครึ่งไปเลขคู่ ซึ่งระบุไว้ใน มาตรฐาน IEEE 754 เราไม่จำเป็นต้องใช้มันที่นี่ เพราะเศษสตางค์ของเราไม่ใช่ครึ่ง
ส่วนหารสามส่วนของจำนวนเต็มเหลือเศษพอดีหนึ่งสตางค์ และคำถามเดียวคือใครถือมันไว้
สองสกุลเงินในกลุ่มเดียว และเหตุที่รวมกันไม่ได้
ตอนนี้มีบิลที่สองเข้ามาในกลุ่ม Aiko จ่ายค่าแท็กซี่ และราคา ¥6,000 สิ่งล่อใจสำหรับยอดที่เหนื่อยล้าคือการเอา ¥6,000 ไปบวกกับ ฿1,000.00 แล้วแสดงเป็นตัวเลขเดียว
ตัวเลขนั้นไม่มีความหมาย ฿1,000.00 กับ ¥6,000 ไม่ใช่ของชนิดเดียวกัน การนำมาบวกกันก็เหมือนเอาระยะทางไปบวกกับน้ำหนัก เงินเยนมีทศนิยมศูนย์ตำแหน่งเป็นหน่วยย่อย เงินบาทมีสองตำแหน่ง ตาม ISO 4217 อีกครั้ง ทั้งสองยังปัดเศษไม่เหมือนกันด้วยซ้ำ
เราจึงเก็บยอดแยกตามสกุลเงิน ในเงินบาทไม่มีอะไรเปลี่ยน Aiko ค้าง Lucas ฿333.33 และ Sofia ค้าง Lucas ฿333.33 ในเงินเยน ค่าแท็กซี่หารสามคนละ ¥2,000 Aiko จ่าย ¥6,000 Aiko จึงได้รับคืน ¥6,000 ลบ ¥2,000 เท่ากับ ¥4,000
Lucas ค้าง ¥2,000 Sofia ค้าง ¥2,000 ¥2,000 บวก ¥2,000 ได้ ¥4,000 สองยอด แต่ละยอดรวมกันได้ศูนย์ ไม่มียอดใดแกล้งเป็นอีกยอด หากต้องการรู้ลึกถึงรูปแบบความผิดพลาดตรงนี้ เราเขียนไว้ในเรื่อง บั๊กเรื่องเงินข้ามสกุล
การแก้ไขบิลเก่า และสิ่งที่ต้องเกิดกับประวัติ
เดือนที่สาม มีคนพบว่ามื้อค่ำถูกบันทึกผิด จริงๆ คือ ฿1,200.00 ไม่ใช่ ฿1,000.00 เขาจึงแก้ไข นี่คือจุดที่ยอดซึ่งดูเหมือนเคลียร์แล้วกลับขยับขึ้นมา และเป็นจุดที่แอปหลายตัวพลาดอย่างเงียบๆ
การแก้แบบง่ายๆ คือเขียนทับตัวเลขเดิมแล้วคำนวณใหม่ตั้งแต่ต้น แต่ผู้คนจ่ายตามส่วนหารเดิมไปแล้ว หากประวัติถูกเขียนใหม่อย่างเงียบๆ จะไม่มีใครเห็นว่าทำไมตอนนี้ตัวเองค้างมากขึ้น การแก้ไขจึงต้องคำนวณส่วนหารใหม่และบันทึกส่วนต่าง ไม่ใช่ลบอดีตทิ้ง ฿1,200.00 หารสามได้ ฿400.00 พอดี ไม่มีเศษสตางค์ครั้งนี้
ส่วนหารแต่ละคนกลายเป็น ฿400.00 Lucas จ่าย ฿1,200.00 Lucas จึงได้รับคืน ฿1,200.00 ลบ ฿400.00 เท่ากับ ฿800.00 Aiko ค้าง ฿400.00 Sofia ค้าง ฿400.00 ฿400.00 บวก ฿400.00 ได้ ฿800.00
ยอดเงินบาทขยับจากค้าง ฿666.66 เป็นค้าง ฿800.00 และส่วนต่าง ฿133.34 นั้นตามรอยได้พอดีถึง ฿200.00 ที่มื้อค่ำเพิ่มขึ้น ส่วนหารอีกสองส่วนต่างเพิ่มคนละ ฿66.67 และ ฿66.67 บวก ฿66.67 ได้ ฿133.34 เราเก็บรายการเดิมไว้และเพิ่มส่วนที่แก้ไขทับด้านบน เหตุที่การแก้ไขต้องคำนวณส่วนหารใหม่ แทนที่จะแกล้งว่ามื้อค่ำเป็น ฿1,200.00 มาตลอด เป็นเรื่องราวของมันเองใน การแก้ไขต้องคำนวณส่วนหารใหม่
มีคนออกไป และเกิดอะไรกับเงินที่เขาค้าง
สาเหตุที่สี่คือคน ไม่ใช่ตัวเลข สมมติ Sofia ออกจากกลุ่มทั้งที่ยังค้าง ฿400.00 ในเงินบาท และ ¥2,000 ในเงินเยน ตอนนี้ยอดไม่สามารถลงเป็นศูนย์ได้ด้วยตัวเอง เพราะคนหนึ่งที่ยอดพึ่งพาได้ออกไปแล้ว
นี่ไม่ใช่ความผิดพลาดทางการคำนวณ การคำนวณนั้นถูกต้อง กลุ่มมีช่องโหว่ขนาดเท่าส่วนของ Sofia
มีสิ่งที่ซื่อตรงให้ทำอยู่ไม่กี่อย่าง และทุกอย่างเป็นการตัดสินใจ ไม่ใช่การคำนวณ กลุ่มยกหนี้จำนวนนั้นได้ และบันทึกว่าได้ยกไป มีคนรับไว้ได้ และบันทึกว่าใครรับ หรือ Sofia จ่ายก่อนออกไปได้
สิ่งที่สำคัญคือการเลือกถูกเขียนลงเป็นรายการ เพื่อให้ยอดอ่านเป็นศูนย์เพราะมีบางอย่างเกิดขึ้น ไม่ใช่เพราะหนี้ถูกลบไปอย่างเงียบๆ เราไม่เคยตัดสินใจแทนคุณ เราบันทึกการเลือกที่คุณทำ ตรรกะเดียวกันนี้ใช้กับเพื่อนร่วมห้องที่ย้ายออกกลางสัญญาเช่า ซึ่งเราครอบคลุมไว้ใน การหารค่าเช่ากับเพื่อนร่วมห้อง
วิธีตรวจสอบยอดด้วยตัวเองเมื่อคุณหารบิล
คุณตรวจสอบทั้งหมดนี้ด้วยมือได้ และควรรู้วิธี เอาทีละสกุลเงิน อย่าปนกันเด็ดขาด สำหรับสกุลเงินนั้น รวมทุกอย่างที่แต่ละคนจ่าย รวมทุกอย่างที่แต่ละคนค้าง ทีละส่วน
ยอดของคนหนึ่งคือเงินที่จ่ายลบเงินที่ค้าง ทำแบบนี้กับทุกคน แล้วบวกยอดทั้งหมดเข้าด้วยกัน ผลรวมต้องเป็นศูนย์ หากไม่ใช่ ส่วนต่างจะบอกว่าคุณเจอสาเหตุใด
ส่วนต่างหนึ่งหรือสองสตางค์คือการปัดเศษ ดูว่าเศษสตางค์ไปตกที่ใดและตรวจว่ามันไปที่เดิมทุกครั้ง ส่วนต่างขนาดเท่าทั้งบิล หรือยอดรวมที่ดูเป็นไปไม่ได้ มักเป็นสกุลเงินที่สองที่ถูกรวมเข้ามา ยอดที่เปลี่ยนไปตั้งแต่ครั้งก่อนที่คุณดูชี้ไปที่การแก้ไข จึงเปิดดูประวัติของบิลนั้น
ยอดที่ปิดไม่ลงเลยชี้ไปที่คนที่ออกไป เมื่อคุณหารบิลกับเพื่อน ยอดเป็นเพียงเรื่องเลขเสมอ ส่วนต่างที่ดื้อดึงจึงเป็นข้อมูล ไม่ใช่โชคร้าย หากคุณอยากเห็นตัวเลขมากกว่าจะเชื่อคำเรา บทความ สถิติการหารบิล ของเราแสดงว่าแต่ละกรณีเกิดขึ้นบ่อยแค่ไหน
บัญชีแบบเพิ่มได้อย่างเดียวจัดการทั้งสี่อย่างอย่างไร
เบื้องหลังของ Dimesum คือบัญชีแบบบันทึกคู่ที่เพิ่มได้อย่างเดียว และเป็นสาธารณะ ดังนั้นไม่มีสิ่งใดที่ต้องเชื่อโดยไม่มีหลักฐาน การบันทึกคู่หมายความว่าทุกจำนวนถูกบันทึกสองครั้ง ครั้งหนึ่งเป็นสิ่งที่ค้าง และอีกครั้งเป็นสิ่งที่มีผู้ค้างให้ ทั้งสองด้านจึงสมดุลเสมอ หลักการนี้เก่าแก่กว่าซอฟต์แวร์ และอธิบายไว้อย่างชัดเจนในหัวข้อ การบัญชีแบบบันทึกคู่ เพิ่มได้อย่างเดียวหมายความว่าเราไม่เคยเขียนทับ เราเพียงเพิ่มเข้าไป
การออกแบบเดียวนั้นจัดการทั้งสี่สาเหตุ การปัดเศษแน่นอนเพราะปลายทางของเศษสตางค์ถูกเขียนไว้ในกฎการบันทึก ไม่ใช่ตัดสินในตอนนั้น สกุลเงินแยกกันเพราะแต่ละรายการพกสกุลเงินของตัวเอง และบัญชีปฏิเสธที่จะบวกข้ามสกุล การแก้ไขกลายเป็นรายการแก้ไขใหม่ที่คำนวณส่วนหารใหม่ ความจริงเดิมและความจริงใหม่จึงอยู่รอดทั้งคู่ เราอธิบายกลไกนั้นไว้ใน บัญชีแบบเพิ่มได้อย่างเดียวสำหรับค่าใช้จ่ายที่หารกัน
และคนที่ออกไปกลายเป็นการตัดสินใจที่ถูกบันทึก เป็นรายการเหมือนรายการอื่น ไม่ใช่แถวที่หายไป เราบันทึกทุกอย่าง เราไม่เคยถือหรือเคลื่อนย้ายเงินของคุณ บัญชีเป็นเพียงบันทึก และการเคลียร์เกิดขึ้นโดยตรงระหว่างพวกคุณ ในจำนวนการโอนที่น้อยที่สุดเท่าที่เราคำนวณได้ หากคุณกำลังเปรียบเทียบเครื่องมือ บันทึกของเราเรื่อง เปรียบเทียบแอปหารบิล และ เปรียบเทียบแอปหารค่าเช่า ยึดกับสิ่งที่แต่ละตัวทำได้และทำไม่ได้
ยอดที่ไม่ลงตัวไม่ใช่คำตัดสินมิตรภาพหรือการคำนวณของคุณ มันเป็นเพียงหนึ่งในสี่ข้อเท็จจริงเล็กๆ เกี่ยวกับกลุ่มของคุณ เปิด Dimesum แล้วบัญชีจะบอกคุณว่าเป็นข้อไหน
คำถามที่พบบ่อย
ทำไมยอดหารบิลร่วมกันถึงไม่ลงตัว?
เกือบทุกครั้งเกิดจากสาเหตุใดสาเหตุหนึ่งในสี่อย่าง เศษสตางค์ที่ปัดเศษ สกุลเงินที่สองที่เผลอเพิ่มเข้าไป บิลเก่าที่ถูกแก้ไข หรือสมาชิกที่ออกไปทั้งที่ยังค้างเงิน มีเพียงอย่างแรกเท่านั้นที่เป็นเรื่องเลข เลือกสกุลเงินเดียว นำเงินที่แต่ละคนจ่ายลบด้วยส่วนที่ต้องรับผิดชอบ แล้วขนาดของส่วนต่างจะบอกว่าเป็นสาเหตุใด
เศษสตางค์ที่หารไม่ลงตัวใครเป็นคนรับ?
ขึ้นอยู่กับกฎของแอป ตราบใดที่กฎนั้นให้ผลเหมือนเดิมทุกครั้ง มื้อค่ำ ฿1,000.00 หารสามคนได้ ฿333.33 ฿333.33 และ ฿333.34 เศษสตางค์นั้นต้องไปตกที่ใดที่หนึ่งอย่างแน่นอน Dimesum ส่งให้ผู้จ่าย ดังนั้นมื้อค่ำเดียวกันจะไม่ให้ยอดต่างกันสองครั้ง กฎสำคัญกว่าตัวเลือก
รวมยอดสองสกุลเงินในกลุ่มเดียวได้ไหม?
ไม่ได้ และแอปที่ซื่อตรงก็ไม่ควรทำ ฿1,000.00 กับ ¥6,000 เป็นของคนละชนิด มีหน่วยย่อยต่างกัน การนำมารวมกันจึงได้ตัวเลขที่ไม่มีความหมาย Dimesum แยกยอดของแต่ละสกุลเงินไว้ และไม่เคยรวมเข้าด้วยกัน คุณเคลียร์แต่ละสกุลเงินแยกกัน นี่คือเหตุผลที่กลุ่มหนึ่งจะค้างทั้งเงินบาทและเงินเยนพร้อมกันได้
ยอดจะเปลี่ยนยังไงเมื่อแก้ไขบิลเก่า?
ส่วนหารจะถูกคำนวณใหม่และบันทึกส่วนต่างเป็นรายการแก้ไขใหม่ แทนที่จะเขียนทับของเดิม แก้มื้อค่ำจาก ฿1,000.00 เป็น ฿1,200.00 ส่วนหารเท่ากันของแต่ละคนจะเปลี่ยนจาก ฿333.33 เป็น ฿400.00 ยอดที่ค้างจึงเพิ่มขึ้น ฿133.34 รายการเดิมยังคงอยู่ ส่วนที่แก้ไขวางทับไว้ด้านบน และทุกคนตรวจสอบได้ว่าทำไมยอดจึงเปลี่ยน
สมาชิกออกจากกลุ่มทั้งที่ยังค้างเงินทำยังไง?
การคำนวณยังถูกต้องอยู่ กลุ่มเพียงมีช่องโหว่ขนาดเท่าส่วนที่เขายังไม่จ่าย ยอดจะลงเป็นศูนย์ไม่ได้จนกว่าจะมีคนตัดสินใจว่าจะทำอย่างไร จำนวนนั้นจะถูกยกหนี้ ถูกรับไว้โดยสมาชิกอีกคน หรือเคลียร์ก่อนที่เขาจะไป และไม่ว่าจะเป็นทางไหนก็ถูกบันทึกเป็นรายการ Dimesum บันทึกการตัดสินใจที่คุณทำ ไม่เคยตัดสินใจแทนคุณ
บทความยอดนิยม
- บัญชีเพิ่มอย่างเดียวที่ทำให้ยอดหารบิลแม่นยำอ่าน 6 นาที
- ทำไมการแก้ไขค่าใช้จ่ายร่วมต้องระบุการแบ่งใหม่อ่าน 5 นาที
- บั๊กเรื่องเงินหกจุดในการแยกบิลหลายสกุลเงินอ่าน 6 นาที
- เคลียร์ค่าใช้จ่ายกลุ่มให้จบในไม่กี่การโอนอ่าน 6 นาที
- วิธีแบ่งบิลเมื่อมีจานที่ไม่ได้แชร์กันอ่าน 6 นาที