I realize this post is over a month old, but I was interested in this problem and this is the solution I came up with (without the $timeout hack):
I'm not sure how technically correct it is (you could argue it's a different hack), but I think the model should always be updated with the most specific value (i.e. 3.25444) in order to generate a "dirty" event. This way, you could define a $render function on the controller that's tied to the ngModelOnblur directive (which should be called "round" or something) and then call that function from the blur event.
Basically, during the blur event, coerce the input to re-render itself with the rounded value, keeping the model value intact.