It does not matter if you add random float to a float and truncate or
trancate and add a random bit, the outcome will be exactly the same
sequence of bits so it does not matter, you can always add dither
later.
Write it out...
trun(signal + noise) = trun(signal) + noise'
notice that noise' is not the same as noise, but the equality holds
so one can do what can not be done -- remove undesired harmonic
after truncation.
The problem is that there is no way of calculating noise' after the truncation. You would need the information that was lost in the truncation.