Fix float point overflow when doing pass up

The old way of rounding floor(x/((float)sizeof(int)))*sizeof(int)) will
cause overflow when x is greater than 203672784. For example, if x is
203672800, the above expression will give 203672792. When it's minus by
parent_sent_pos, negative value can be generated which is later passed
to an unsigned integer. This will cause the whole learning fail. This
patch fixes the above expression and a potential network problem.