我目前正在學習JS,而且我正在嘗試通過編碼練習。到目前爲止,我已經成功地將部分代碼中的大量資源脫機並聯機,將以下代碼拼湊在一起。我非常接近 - 在我的結果中無法獲得正確的數字。分割條例草案 - JavaScript練習
一些背景: 輸入一個對象到函數中,輸出一個函數,顯示每個人應該根據對象中的(總賬單/人)支付或接收多少錢。每個屬性==人。結果必須舍入到小數點後兩位。
function splitTheBill(group) {
var result = {};
var sum = 0;
for (var person in group) {
sum += group[person];
var avg = sum/(Object.keys(group).length);
result[person] = Math.floor(-100 * (group[person] - avg))/100;
}
return result;
}
splitTheBill({A: 7, B: 3, C: 2});
// console result comes out to be: { A: -4.67, B: 0.33, C: 2 }
// if avg of above object is 4, then answer should be: {A: -3.00, B: 1.00, C: 2.00}
練習本身對於這個問題應該不重要。問題更多的是爲什麼代碼產生不正確的結果。我已經檢查過sum和avg是否返回正確的值 - 他們會這樣做。 for..in循環內的result[person]
可能會導致問題,我不完全明白爲什麼。
是的,我意識到我可以使用.toFixed(2),但是在挑戰中,它需要一個數字類型。它不必顯示結尾0。 但現在的另一個問題是,它不會通過測試,因爲顯然0 * -1 = -0,它想看到一個0. – aizkhaj
是的,在一些非常罕見的情況下,'-0'是不一樣的'0',但你可以很容易地解決 – adeneo
https://jsfiddle.net/m9kqyus3/ – adeneo