improved FloatDecoder