В настоящее время я изучаю 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}
Само осуществление не должно иметь значения для этого вопроса. Вопрос в том, почему код создает неверные результаты. Я проверил, верят ли сумма и avg правильные значения - они это делают. Вероятно, result[person]
в цикле for..in вызывает проблему, и я не совсем понимаю почему.
Да, я понял, что я могу используйте .toFixed (2), однако с вызовом он запрашивает тип номера. Он не должен показывать окончание 0s. Но теперь другая проблема заключается в том, что он не пройдет тесты, потому что, по-видимому, 0 * -1 = -0, и он хочет видеть 0. – aizkhaj
И да, в некоторых очень редких случаях '-0' - это не то же самое, что '0', но вы можете решить это легко – adeneo
https://jsfiddle.net/m9kqyus3/ – adeneo