round_preserve_sum: Round values while preserve their rounded sum in R
Description
Sometimes, the sum of rounded numbers (e.g., using base::round()) is not
the same as their rounded sum.
Usage
round_preserve_sum(x, digits = 0)
Value
A numerical vector of same length as x.
Arguments
x
Numerical vector to sum.
digits
Number of decimals for rounding.
Details
This solution applies the following algorithm
Round down to the specified number of decimal places
Order numbers by their remainder values
Increment the specified decimal place of values with k largest
remainders, where k is the number of values that must be incremented to
preserve their rounded sum