Itu dikenal sebagai perkiraan presisi . Ini bukan kesalahan, floating point
tipe data dimaksudkan untuk bekerja seperti itu. Mereka tidak dapat menyimpan data dengan tepat. Jadi jika itu penting, Anda harus menggunakan tipe data titik tetap, seperti DECIMAL
di MySQL.
Di sisi lain, Anda selalu dapat menggunakan delta presisi untuk perbandingan floating point, seperti:
SELECT
`foo`,
`bar`,
IF(ABS(`foo`-`bar`)<1E-13, 0, `foo`-`bar`) AS zero_compared
FROM
t
seperti yang Anda lihat, di sini delta adalah 1E-13
(biasanya, itu sudah cukup)