Device stores sample rate as a float.

This prevents all sorts of issues.  We divide by it in a floating point context all the time and floats are big enough to hold all sample rates.