The simpler variant mentioned, converting all the Floats into Rationals in the first place and at the end converting the Rational Numbers into Floats, I think the precision of the output will be a little lesser in this case. 

Can you please elaborate the other variant ?

"As a variant: replace all Floats to Symbols in limit() and then substitute ones back at the end."