Eso se conoce como una precisión aproximada. . Esto no es un error, punto flotante
los tipos de datos están destinados a funcionar de esa manera. No pueden almacenar datos con precisión. Entonces, si eso importa, debe usar tipos de datos de punto fijo, como DECIMAL
en MySQL.
Por otro lado, siempre puede usar precisión delta para comparaciones de punto flotante, como:
SELECT
`foo`,
`bar`,
IF(ABS(`foo`-`bar`)<1E-13, 0, `foo`-`bar`) AS zero_compared
FROM
t
como puede ver, aquí delta es 1E-13
(normalmente, eso será suficiente)