What Every Computer Scientist Should Know About Floating-Point Arithmetic.
In short - you should not rely on precise values of float numbers because of the way they are stored in the memory.
See also python docs about it - Floating Point Arithmetic: Issues and Limitations. It contains the next passage:
For example, if you try to round the value 2.675 to two decimal places, you get this
>>> round(2.675, 2)
2.67
The documentation for the built-in round() function says that it
rounds to the nearest value, rounding ties away from zero. Since the
decimal fraction 2.675 is exactly halfway between 2.67 and 2.68, you
might expect the result here to be (a binary approximation to) 2.68.
It’s not, because when the decimal string 2.675 is converted to a
binary floating-point number, it’s again replaced with a binary
approximation, whose exact value is
2.67499999999999982236431605997495353221893310546875
Since this approximation is slightly closer to 2.67 than to 2.68, it’s
rounded down.