JS: Condtional: Calculate Change

Привет, най накрая стигнах до работещо решение, но един тест кейс, все пак гърми, дали може някой да помогне защо се случва така.

Ето го решението:

let price = Math.round(+gets()*100);
let sumPayed = Math.round(+gets()*100);


let change = sumPayed - price;
let temp = 0;


if(change >= 100) {
        temp = Math.round(change / 100);
        print(`${temp} x 1 lev`);
        change =Math.round(change - (temp * 100));
    } 
if (change >= 50) {
        (Math.round(change / 50) !== 0)
            temp = Math.floor(change / 50);
            print(`${temp} x 50 stotinki`);
            change =Math.round(change - (temp * 50));
    }
if (change >= 20) {
            temp = Math.floor(change / 20);
            print(`${temp} x 20 stotinki`);
            change =Math.round(change - (temp * 20));
    }
if (change >= 10) {
                temp = Math.floor(change / 10);
            print(`${temp} x 10 stotinki`);
            change =Math.round(change - (temp * 10));
}
if (change >= 5) {
            temp = Math.floor(change / 5);
            print(`${temp} x 5 stotinki`);
            change =Math.round(change - (temp * 5));
}
if (change >= 2) {
                temp = Math.floor(change / 2);
                print(`${temp} x 2 stotinki`);
                change =Math.round(change - (temp * 2));
}
if (change >= 1) {
        temp = Math.floor(change / 1);
        print(`${temp} x 1 stotinki`);
        change =Math.round(change - (temp * 1));
    }

Прегледай си последния print , има грешка, погледни как е в условието

В първия if използваш Math.round и ако рестото е над x.50 ти закръглява левовете нагоре. Например ако change е 2.70 ще върне 3 х 1 lev. Math.floor вероятно ще оправи нещата.

поправих го на 1 x stotinka, не е това проблема.

math.floor - все още не оправя нещата, все така само 80 точки ми дава

Обръщам внимание и на тази част в скобите след отворената curly скоба:
if (change >= 50) {
(Math.round(change / 50) !== 0)

Привет хора, ето го финалното решение, със всички корекции, които предложихте, за съжаление пак минава само частично, т.е. ми дава 80 от 100 точки.

let price = Math.round(+gets()*100);
let sumPayed = Math.round(+gets()*100);
let change = sumPayed - price;
let temp = 0;


if(change >= 100) {
        temp = Math.floor(change / 100);
        print(`${temp} x 1 lev`);
        change =Math.round(change - (temp * 100));
    } 
if (change >= 50) {
        (Math.round(change / 50) !== 0)
            temp = Math.floor(change / 50);
            print(`${temp} x 50 stotinki`);
            change =Math.round(change - (temp * 50));
    }
if (change >= 20) {
            temp = Math.floor(change / 20);
            print(`${temp} x 20 stotinki`);
            change =Math.round(change - (temp * 20));
    }

if (change >= 10) {
                temp = Math.floor(change / 10);
            print(`${temp} x 10 stotinki`);
            change =Math.round(change - (temp * 10));
}
if (change >= 5) {
            temp = Math.floor(change / 5);
            print(`${temp} x 5 stotinki`);
            change =Math.round(change - (temp * 5));
}
if (change >= 2) {
                temp = Math.floor(change / 2);
                print(`${temp} x 2 stotinki`);
                change =Math.round(change - (temp * 2));
}
if (change >= 1) {
        temp = Math.floor(change / 1);
        print(`${temp} x 1 stotinki`);
        change =Math.round(change - (temp * 1));
}

Привет,

Както е споменал @miroslav.ivnv имаш грешка в последния принт.
Ако го поправиш, задачата ще мине.

Поздрави,
Чаво

пробвах го и със 1 stotinka, както и с 1 stotinki, и двете ми докарват един и същ резултат