There are [many ways that round to the nearest integer](https://en.wikipedia.org/wiki/Rounding#Rounding_to_the_nearest_integer). The sum of integers obtained will be close to the sum of the original numbers on average when the distribution of the fraction parts of the numbers are roughly symmetric to $0.5$. One of those methods might be good enough for you in practice. - Round half up. $\ x\to\lfloor x+0.5\rfloor$. - Round half down. $\ x\to \lceil x-0.5\rceil$. - Round half toward zero. $\ x\to \text{sgn}(x)\lceil|x|-0.5\rceil$ - Round half away from zero. $\ x\to \text{sgn}(x)\lfloor|x|+0.5\rfloor$ - Round half to even (banker's rounding). - Round half to odd. - Round half up or down alternately. - Round half up or down randomly. - Stochastic rounding. However, none of the above will ensure "the sum of integers must be as close to the sum of original numbers as possible". To achieve that, we need to keep track of the gap between the two sums. ### Offline Method Suppose a list of numbers $a_1, a_2, \cdots, a_n$ are given. Let <!-- $f_i=\{a_i\}$, where--> $\{a_i\}=a_i-\lfloor a_i\rfloor$ be the fractional part of $a_i$. Let $s = \{a_1\} + \{a_i\} + \cdots + \{a_n\}$. Let $\mathcal R$ be one of the "round half ..." methods above. Then - round $a_i$ to $\lfloor a_i\rfloor$ for $i\le n-\mathcal R(s)$, - round $a_i$ to $\lfloor a_i\rfloor + 1$ for $i\gt n-\mathcal R(s)$. To be fair, sort $a_i$ before rounding. ### Online Method Input: a source that produces numbers Output: numbers rounded Procedure: 1. Let number $gap$ be $0$ 2. Pick one of the "round half ..." methods as $\mathcal R$. 3. For each number $num$ in the source: 1. Let $num{\_}rounded=\mathcal R(gap + num)$. Output $num{\_}rounded$. 2. Add $num - num{\_}rounded$ to $gap$. ### Mixed Method We can mix the offline method and the online method by repeating the following procedure after initializing number $gap=0$. 1. Apply the offline method to the next block of numbers, including $gap$ as a summand for $s$ as well. 2. Adjust $gap$ by the difference of the sum of the numbers and the sum of the resulting numbers. The size of each block of numbers is up to your choice.