Crazy automatic float rounding in MySQL 5.7
This is not just a SQL thing: floating-point numbers should always be considered approximations in any language. See https://floating-point-gui.de/ amongst other references.

You can use the DOUBLE type instead which would help, as that can represent integers up to 53 bits in length accurately, but you would have problems later with bigger numbers.

Unless you absolutely must have floating-point numbers, these types should be avoided. Use integer (int, bigint, ...) or fixed-point types (decimal, numeric) instead. As you don't say what you are using these numbers to represent we can't make a more specific recommendation.