Имам проблем с въпросната задача, на която тест номер 4 не ми минава и не мога да проумея защо. В главата ми се върти само проблем със закръглянето на числата, но дори тогава по пътя на логиката щеше да има повече от 1 fail test. Ще се радвам на насоки.
Кода ми е:
Проваленият тест връща output:
6.30
4.72
Условието е следното:
Calculate Discount
You need to calculate the discounted price for each item in your shopping cart. The discount is 65%, a real deal for you.
Input
On the first line, you will receive N - the number of the items in your shopping cart
On the next N lines you will each item’s price
Output
On each line in the output print the discounted price of the item with two digits after the decimal point (Math rules for rounding apply)
Проблема идва от .toFixed(2). Още в задачата имаш, че (Math rules for rounding apply), тоест от 5 включително закръгляме. toFixed() закръгля от 6 включително и именно затова ти гърми 4-тия тест. Ако пейстнеш кода си в judge с .toFixed(3) ще видиш, че аутпута ти е 4.725 и следователно judge очаква 4.73, а твоят код го закръгля на 4.72. Помисли как можеш да се справиш с този проблем. Аз още при изчисляването на отстъпката съм я пресметнал с 3 знака след запетаята(toFixed(3)) - 4.725, след това умножавам по 100 и давам toFixed(1), за да остане зад запетаята само третият знак. В случая с въпросния тест-кейс ще остане 472.5, на което давам Math.round, за да го закръгли и накрая разделям резултата на 100 и принтирам с два знака след десетичната запетая. 472.5 след Math.round става 473, което разделено на 100 е 4.73 и винаги принтираме с toFixed(2), понеже без него, в случаите, в които имаме нули след запетаята, те няма да се изпишат. Но със сигурност има и по-рационално решение.