From shader-model 3.0 an onwards, you can't just use a vertex-shader by itself, it always needs to be paired with a pixel shader.
In your case, where you're not supplying your own pixel shader (and using shader-model 2.0), you're asking the driver to automatically write one for you and I wouldn't trust it to do the right thing, especially when it comes to advanced features like floating-point render targets.
Anyway, as Dancin_Fool said, the issue is that you're trying to pass your floating-point value through a colour register. As this page says: "Color registers ... have lower precision than most registers, guaranteed to have 8 bits of unsigned data in the range (0, +1)."
You should be using a tex-coord register to pass your floating point value to the pixel shader.