例如100元平分給三個人,每人33元後,最後的1元要發給其中之一的人,變成一人34, 兩人33的分配結果。
某天在網路上找到一篇不錯的演算法,可以交給它幫你分配好。 如下所示:(可到我的JSFIDDLE線上測試~)
//先設定權重 var factor = [ 1, 1, 1 ], factorSum = 0; //100萬元要依比例分給3個人(四拾五入計算到元) var totalAmount = 1000000, amount = []; //三個人勢均力敵,100萬除以3會有餘1元的問題, 且看以下的邏輯演法, 會自然分配好 for (var i = 0; i < factor.length; i++) { factorSum += factor[i]; } var r = ""; for (var i = 0; i < factor.length; i++) { amount[i] = parseInt(Math.round(totalAmount * factor[i] / factorSum)) r += totalAmount + " * " + factor[i] + " / " + factorSum + " = " + amount[i] + "\n"; totalAmount -= amount[i]; factorSum -= factor[i]; } alert(r);
沒有留言:
張貼留言