分帳如何計算
公開金額精度、尾數分配、匯率保存與簡化轉帳的基本方法。
金額不用 JavaScript 浮點數
金額在系統之間以 decimal string 傳遞,資料庫使用 Postgres numeric,前端計算採 decimal arithmetic。這能避免 0.1 加 0.2 產生不精確結果,也能處理大額與不同幣別的小數位數。
尾數使用固定分配規則
均分無法整除時,先分配每個人的最小單位,再依固定順序補上剩餘尾數。所有人的分攤加總永遠等於原始支出,不會因各自四捨五入而多一元或少一元。
匯率跟著該筆支出保存
多幣別支出保留原始金額、原始幣別、結算幣別、採用匯率、日期與來源。歷史支出不會因為今天的市場匯率變動而自動改寫,成員可依刷卡入帳或共同約定手動修正。
簡化轉帳不改變個人淨額
系統先計算每位成員的總應收或應付,再將兩邊配對直到歸零。這會減少轉帳次數,但可能改變原始付款對象。需要逐筆核對時,仍可查看原始債務。