To je známé jako přibližná přesnost . Toto není chyba, plovoucí desetinná čárka
datové typy mají fungovat tímto způsobem. Nemohou ukládat data přesně. Pokud na tom záleží, měli byste použít datové typy s pevným bodem, jako je DECIMAL
v MySQL.
Na druhou stranu můžete vždy použít deltu přesnosti pro srovnání s plovoucí desetinnou čárkou, například:
SELECT
`foo`,
`bar`,
IF(ABS(`foo`-`bar`)<1E-13, 0, `foo`-`bar`) AS zero_compared
FROM
t
jak můžete vidět, zde delta je 1E-13
(normálně to bude stačit)