分帳計算機
免費線上分帳計算機:記下誰付了什麼,自動算出誰該給誰多少,而且轉帳次數最少。支援平均分、依份數、指定金額,聚餐、旅遊、室友合租都適用;可用分享連結傳到 LINE 群組,免註冊、資料不上傳。
- 自動算誰該給誰
- 轉帳次數最少
- 平均・依份數・指定金額
- 分享連結傳群組
成員
先新增一起分帳的人。
帳目
還沒有帳目。
結算
| 成員 | 已付 | 應付 | 差額 |
|---|
差額為正代表別人要還他,為負代表他要付錢。
帳本自動存在這個瀏覽器,不會上傳;分享連結會把整份帳本(名字與金額)放在網址裡,拿到連結的人都看得到。
🔒 所有計算都在你的瀏覽器內完成,資料不會上傳到任何伺服器。
什麼時候會用到
- 聚餐分攤:一群人吃飯由一個人先刷卡,有人沒喝酒、有人只吃一半,用「依份數」或取消勾選,就能算出每個人該付多少,不用在餐桌上按計算機。
- 旅遊分帳:三天兩夜大家輪流付住宿、包車、門票,每筆記下誰付的,回程前看「結算」就知道誰該轉給誰,轉帳筆數最少。
- 室友合租分攤:房租、水電、網路每月由不同人繳,房租可依房間大小設份數(例如大房 1.5、小房 1),月底一次算清。
- 團購拆帳:一個人先付整筆團購款,每人買的數量不同,用「指定金額」填每個人的金額,合計會自動檢查是否和總額相符。
使用說明
- 在「成員」輸入一起分帳的人,按「新增」;可以用逗號或頓號一次加好幾位。
- 每筆花費填項目、金額、誰付的,選分攤方式(「平均分」「依份數」「指定金額」)和要分攤的人,按「新增帳目」。
- 下方「結算」會即時顯示每個人的已付、應付、差額,以及誰該轉給誰多少。
- 按「複製結算結果」貼到群組,或按「複製分享連結」,讓大家打開就看到同一份帳。
實際範例
「墾丁三天兩夜」4 個人:小明付民宿兩晚 9,600 元、小華付包車一日遊 6,000 元、小美付海產店晚餐 3,250 元(阿強食量大算 2 份,其他人各 1 份)、阿強付浮潛 2,000 元(小美沒下水,只有 3 人分)。總支出 20,850 元。
各筆分攤:民宿每人 2,400 元、包車每人 1,500 元;晚餐共 5 份,每份 650 元,阿強 1,300 元;浮潛 2,000 ÷ 3 = 666.67 元,先各取 666 元共 1,998 元,剩下 2 元給清單排前面的小明、小華各 1 元,所以小明、小華 667 元,阿強 666 元。
結算結果:應付小明 5,217、小華 5,217、小美 4,550、阿強 5,866 元;差額小明 +4,383、小華 +783、小美 −1,300、阿強 −3,866 元,加起來剛好是 0。轉帳建議 3 筆:阿強 → 小明 3,866 元、小美 → 小華 783 元、小美 → 小明 517 元。
結果怎麼看
- 差額 = 已付 − 應付。正數代表他先墊了錢、別人要還他;負數代表他要付錢出去。所有人的差額加起來一定是 0,不是 0 就代表算錯,可以用來檢查。
- 轉帳建議只是「怎麼還最省事」:照著轉完,每個人的差額都會歸零,每個人實際花的錢就是表格裡的「應付」,不會因為轉給誰而改變。
- 4 個人最多 3 筆轉帳(人數 − 1);如果有人剛好打平,或某幾個人的差額剛好互相抵銷,筆數會更少。
- 表格與轉帳金額都已依「金額取到」的設定捨入(整數到 1,小數 2 位到 0.01),轉帳時照填即可,不會差 1 元。
原理與計算方法
- 金額先換成最小單位的整數計算(取整數時以 1 為單位,取小數 2 位時以 0.01 為單位),避免電腦小數運算出現 0.1 + 0.2 ≠ 0.3 這類誤差。
- 每筆帳的分攤用最大餘數法:平均分每人權重 1、依份數用份數、指定金額用輸入的金額當權重。每人先按比例無條件捨去,剩下的尾差一個最小單位一個最小單位分給被捨去最多的人;被捨去一樣多時,給成員清單排在前面的人。這樣每筆分完剛好等於原金額,所有人的應付總和等於已付總和。
- 結算求的是最少轉帳筆數:先找出能「互相抵銷」的小團體(團體內差額加總剛好為 0),團體越多、筆數越少,因為每個團體只要在內部轉「人數 − 1」筆就能結清;團體內再讓要付最多的人付給要收最多的人。有差額的人在 18 人以內時保證最少,超過時改用快速配對(最多 人數 − 1 筆)。
- 金額取到:不分幣別,只選「整數」或「小數 2 位」。日常付款、轉帳多以整數為單位,所以預設取整數;金額有小數(例如 12.50)時,改成小數 2 位即可。金額只顯示數字與千分位,不加貨幣符號。
適用限制
- 例如差額是 +6、+4、−4、−3、−3(千元):−4 和 +4 剛好抵銷自成一組,剩下三人一組,總共 3 筆;單純「最大配最大」的做法會給 4 筆。有差額的人超過 18 人時只保證最多「人數 − 1」筆,不保證最少。
- 金額不分幣別、不換匯:同一本帳混用不同貨幣時(例如出國時有人刷台幣、有人付當地貨幣),請先換算成同一種貨幣再記帳。
- 尾差固定給成員清單排前面的人,每筆最多差 1 個最小單位(例如 1 元)。在意的話可改用「指定金額」自己決定誰多付。
- 分享連結裡有整份帳本(名字與金額),拿到連結的人都看得到;對方修改後不會同步回你這邊,要再分享一次。帳目非常多時連結可能太長,可改用「複製結算結果」。
常見問題
怎麼算出誰該給誰多少?
先算每個人的差額(已付 − 應付),再找出能互相抵銷的小團體,讓每個團體內部結清,這樣轉帳筆數最少;n 個人最多只要 n − 1 筆。
除不盡的零頭怎麼處理?
每筆帳先按比例無條件捨去到 1(「金額取到」選小數 2 位時到 0.01),剩下的零頭依序給被捨去最多的人,一樣多時給成員清單排前面的人。每筆分完的總和一定等於原金額,不會多算或少算。
需要註冊嗎?資料會上傳嗎?
不用註冊。所有計算都在你的瀏覽器裡完成,帳本只存在這台裝置的瀏覽器;分享連結的內容放在網址 # 後面,不會送到伺服器。
有人沒參加其中一攤怎麼辦?
記那筆帳時,在「哪些人分攤」取消勾選沒參加的人就好,他不會分攤這筆,其他筆照常計算。
有人吃比較多,可以讓他多付一點嗎?
可以。分攤方式選「依份數」,吃兩份的人填 2、其他人填 1;也能填 0.5 這類小數。想直接指定每個人付多少,就選「指定金額」。
分享到 LINE 群組後,朋友可以一起改嗎?
朋友打開連結會在他的瀏覽器載入同一份帳本,可以繼續修改,但不會同步回你這邊;誰改了就請他再按一次「複製分享連結」傳回群組。
可以刪除已經記過帳的成員嗎?
不能直接刪。這位成員如果付過錢或分攤過某筆帳,刪掉會讓那些帳的金額改變,所以會先提醒你修改或刪除相關帳目。只想改名字的話,直接在名字欄修改即可。
參考來源
- Largest remainder method — Wikipedia
- Intl.NumberFormat() constructor — MDN Web Docs