A float variable is 4 bytes. The way the bits are used to store the number affects the precision of the value, but it is more than 4 decimal places.
The "loss-of-precision" that you are seeing is entirely a function of how the number is being formatted for display. You have control, by specifying the number of digits after the decimal point, of how that formatting occurs.