But the error from double rounding should be tiny, and occurs extremely rarely. The error from a single rounding (as you would get from parsing the float32 directly) is 0.5 ULP, and the error with 64-bit to 32-bit double-rounding should be 0.5 + 2^-30 ULP (an extra 2^-30 ULP) [1].
Comparing the two resulting 32-bit floats gives you the wrong impression about the actual additional error from double-rounding (the 2^-30 ULP, compared to the 0.5 ULP from going from a real number to floating point). For double-rounding to have any effect at all the real input number has to be extremely close to the midpoint of those two 32-bit floats, and the double rounding really just nudges it ~0.5 ULP's down instead of ~0.5 ULP's up (or vice versa).
And the chances of having a double rounding that affects the output is tiny; on the x87 it was approximately 1 in 4096 [2], and for float64 to float32 it's closer to one in a billion.
([1] When double rounding is odd - Normale, et al. - 2004, [2] Handbook of Floating-Point Arithmetic - Muller, et al. - 2010)