surprised Rationalize will sometimes leave a Real unchanged

I was surprised that Rationalize will sometimes leave a Real unchanged even if the fractional part of the Real is well above zero.

a=571628.2812` b=Rationalize[a] (* 571628.2812 *) a===b (* True *) 

I had code blow up because of this, because I explicitly wanted to use only Integer and Rational to avoid rounding-error corner cases, but Rationalize allowed a Real to slip through where it was unwelcome.