Does taking the first value as (half-)integer help for the case of multiplying by a float that isn't itself an integer?  My guess is that for most use cases even if the first value is well behaved that multiplying or dividing will lose precision because what comes out will not be (half-) integer.  But I'm not completely sure about that.