C'est ce qu'on appelle une précision approximative . Ce n'est pas une erreur, virgule flottante
les types de données sont destinés à fonctionner de cette manière. Ils ne peuvent pas stocker les données avec précision. Donc, si cela compte, vous devez utiliser des types de données à virgule fixe, tels que DECIMAL
dans MySQL.
D'un autre côté, vous pouvez toujours utiliser le delta de précision pour les comparaisons en virgule flottante, comme :
SELECT
`foo`,
`bar`,
IF(ABS(`foo`-`bar`)<1E-13, 0, `foo`-`bar`) AS zero_compared
FROM
t
comme vous pouvez le voir, ici delta est 1E-13
(normalement, ça suffira)