слева товары отдельных категорий и сколько денег за них дали, справа по каждой категории должно быть высчитано, сколько денег пришлось на каждую категорию из заплаченных. В задаче так хитро подобраны цифры, что не могу понять, как делать округление так, чтобы совпадало с expected. Для чисел использую Decimal и пробую разные типы округлений для .quantize, но ни один не подходит: какое-то из трёх чисел меньше на сотую получается. На втором скрине округление до большей дробной части вывел.
Что можно сделать и как такие ситуации в реальной жизни обходятся?
когда работаешь с деньгами - всегда умножай на 100 и производи любые расчёты. а далее - если необходимо показать результат - дели на 100
а если у валюты больше двух знаков составляет дробная часть?
одна из очень немногих валют мира, которая делится не на 100, а на 1000. полагаю, что в случае использования тунисского динара было бы разумно умножать на 1000 для проведения всех расчётов :)
Приведешь ты к целому числу, а если тебе нужно высчитать, допустим, среднюю сумму операции, у тебя дроби появятся, если там дальше будет умножение на всякие коэффиценты и т.д., то все равно будет дробная часть. Так что расчеты исключительно в интах, в подобных случаях, приведут к тому, что округление будет на каждой операции, когда его можно сделать в конце расчетов и получить меньшую погрешность
приведи пожалуйста конкретный пример по каждому из случаев, чтобы было более наглядно. потому что в теории всё слишком красиво, как бы не оказалось что это ошибочная точка зрения.
а куда денутся?)
Канут в небытие
Обсуждают сегодня