@Woyteg: In general, fewer objects means less overhead.
Also: subtraction is (at least in principle) always more efficient than branching ("if" logic), and [gate] presumably is based on "if" logic. However, when patching in Max, the overhead for message-passing is several orders of magnitude higher than the difference between subtraction and branching at the machine level. So this is something you really don't need to lose sleep over.
What bothers me more about Mike's (float) solution is the granularity of the output. This may not matter in a lot of applications, but if your set up is such that different things happen for 0.0, 0.005, and 0.01; well, 0.005 isn't going to happen in this patch. You can work around that, of course, following Chris' example of higher granularity. You simply have to know what you want and how to get it.
For my part, I'd use lp.shhh and take the 24-bit granularity and run with it. At this point in time with Max 6 (and unfortunately), that is only an option for people using Litter Power Pro. Working on this, though.