It’s due to the floats. Blender only displays 7 digits, but would do internal calculations with floats before rounding the result off to 7 digits. Floats don’t always translate to rational (in the mathematical sense) decimal values. In fact they usually don’t, so there is usually some small amount of error involved when rounding off.
For example, if you enter 3.1 into a standard decimal to floats converter, it will spit out 66 66 66 40 as the answer (Little Endian). However, if you then clear the values and input 66 66 66 40 as your starting point, the decimal value returned will be 3.09999990 which is obviously not quite the same as 3.1. In this case it will round off to 3.1 at seven digits, but this is a very simple example. Once you start using transformations on an object it would be perfectly possible to get larger errors that would affect a seven digit display.