Пропорциональное распределение суммы
Есть довольно распространённая потребность в функции, которая могла бы распределять заданную сумму согласно весовым коэффициентам. На первый взгляд, не очень понятно, о чём речь. Приведу примеры. Распределение скидки на заказ Допустим, интернет-магазин предоставляет клиенту скидку на заказ (по бонусной карте, купону или ещё как-то). Скидка даётся на весь заказ, но её действие нужно пропорционально распределить по товарам, чтобы, например, правильно сформировать кассовый чек (в нём каждую позицию чека нужно расписать: цена до применения скидки и сумма с учётом скидки). Пример: 1) Товар №1 - цена 1500 руб. 2) Товар №2 - цена 1700 руб. Итого сумма заказа получается 3200 руб. Допустим, клиенту предоставляется скидка 10%. В данном случае легко посчитать, что скидка в процентах будет одинаковой для каждого товара: 1) Товар №1 - цена со скидкой 1500 - 10% = 1350 руб. 2) Товар №2 - цена со скидкой 1700 - 10% = 1530 руб. Это лёгкий пример, где никакого распределения не потребовалось...