Мне нужно написать код, который будет распределять значение по списку в зависимости от относительных весов "базовых" значений в списке. Простое разделение "базисных" значений на сумму "базисных" значений, а затем умножение фактора на исходное значение на пропорциональную работу в определенной степени:
proratedValue = (basis / basisTotal) * prorationAmount;
Однако результат этого вычисления затем округляется до целочисленных значений. Эффект округления означает, что сумма пропорционального значения для всех элементов в списке может отличаться от первоначального значения атрибута.
Может ли кто-нибудь объяснить, как применять "без потерь" алгоритм оценки, который пропорционально распределяет значение по списку как можно точнее, не испытывая ошибок округления?