Why does the conversion from single precision to shaping decrease by one?
Because the internal data is stored in binary, many floating-point numbers cannot be accurately represented in binary, but can only be approximately represented. This error is amplified after you multiply it by 1000. If you still don't know, try it yourself. First, convert decimal into binary. I'm sure you'll understand eventually.