This should almost be an antipattern; if you are going to evalf you should pass the substitutions to evalf, not do them on your own since subs locks in the values at a given precision.