Kesalahan MySQL dalam Membandingkan Nilai Titik Terapung
Pengiraan titik terapung dalam MySQL boleh membawa kepada perbandingan yang salah disebabkan oleh had ketepatan yang wujud. Untuk menangani isu ini, pertimbangkan untuk menggunakan jenis PERPULUHAN.
Ketepatan Intrinsik Aritmetik Titik Terapung
Nombor titik terapung disimpan dengan ketepatan terhad, yang boleh memperkenalkan sedikit ketidaktepatan semasa pengiraan. Sebagai contoh, pertimbangkan nombor 50.12 yang disimpan sebagai apungan dalam MySQL:
CREATE TABLE users (points FLOAT); INSERT INTO users (points) VALUES (50.12);
Apabila membandingkan nilai ini dengan 12.75 menggunakan operator >, MySQL mengembalikan "False," walaupun 50.12 lebih besar daripada 12.75.
SELECT COUNT(*) FROM users WHERE points > 12.75;
Kelebihan PERPULUHAN
Untuk mengelakkan ketidakkonsistenan tersebut, jenis data PERPULUHAN menyediakan ketepatan dan skala tetap, memastikan pengiraan dan perbandingan adalah tepat. Contohnya:
ALTER TABLE users MODIFY COLUMN points DECIMAL(6,2); UPDATE users SET points = 50.12; SELECT COUNT(*) FROM users WHERE points > 12.75;
Kini, perbandingan mengembalikan "Benar," seperti yang dimaksudkan.
Pertimbangan Tambahan
Atas ialah kandungan terperinci Mengapa MySQL Bergelut dengan Membandingkan Nilai Titik Terapung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!