以PHP編碼的Web應用程序和MySQL數據庫。糾正總計除數和舍入誤差
我有一個系統可以在拆分成本時計算許多人的不同成本。例如Person A買東西10和人B,C和D應該分攤成本。
系統應爲此寄存器正記錄人的10甲和10/3負記錄B,C和D.
然而,當這樣做時; B,C和D四捨五入後均爲-3.33。當然不加起來共有10.什麼是最好的方法來解決這個問題?一個最佳的解決方案會隨機化人們得到的成本稍微大一點。
一個可行的辦法是,如果我只是讓最後一個人的債務是10 - (A + B)
,但後來有一個問題,如果四人分裂的成本,例如13.34。然後不同的部分將是3.34,3.34,3.34和3.32,而最佳分割將是3.34,3.34,3.33,3.33。
有些人可能會認爲,與足夠的小數這只是一個問題時,有大量的行。但是在一個經濟的系統中,我認爲即使從一開始就有一個自動防故障系統也很重要。它需要是可擴展的,並且不能有絲毫的錯誤。 不公平是沒問題的,只是沒有錯誤。
類似的問題:sum divided values problem (dealing with rounding error)
「不公平是正常的,只是沒有錯誤。」 - 愛它 – user1020317 2012-07-23 12:01:33
+1演示文稿 – Smandoli 2012-07-23 12:10:22
我想我會找到兩個最接近的分隔值,然後在他們被分配時在兩者之間切換。然後找出如何處理(潛在)最後一個奇數值。 – Smandoli 2012-07-23 12:11:24