float has scale-independent error because it is logarithmic/exponential.
If you quiet the amplitude by some decibels, that is just decrementing the exponent field in the float; the mantissa stays 24 bits wide.
If you quiet the amplitude of integer samples, they lose resolution (bits per sample).
If you divide a float by two, and then multiply by two, you recover the original value without loss, because just the exponent decremented and then incremented again.
(Of course, I mean: in the absence of underflow. But underflow is far away. If the sample value of 1 is represented as 1.0, you have tons of room in either direction.)
If you quiet the amplitude by some decibels, that is just decrementing the exponent field in the float; the mantissa stays 24 bits wide.
If you quiet the amplitude of integer samples, they lose resolution (bits per sample).
If you divide a float by two, and then multiply by two, you recover the original value without loss, because just the exponent decremented and then incremented again.
(Of course, I mean: in the absence of underflow. But underflow is far away. If the sample value of 1 is represented as 1.0, you have tons of room in either direction.)