Rumah > pangkalan data > tutorial mysql > Mengapa Perbandingan Titik Terapung MySQL Saya Tidak Tepat?

Mengapa Perbandingan Titik Terapung MySQL Saya Tidak Tepat?

Mary-Kate Olsen
Lepaskan: 2024-11-08 13:45:02
asal
1028 orang telah melayarinya

Why are My MySQL Floating-Point Comparisons Inaccurate?

Isu Perbandingan Titik Terapung MySQL

Anda menghadapi masalah dengan perbandingan titik terapung dalam MySQL kerana nombor titik terapung sememangnya tidak tepat kerana kepada cara mereka diwakili dalam binari. Ini boleh membawa kepada hasil yang tidak dijangka apabila membandingkan nilai yang sepatutnya sama.

Pertimbangkan contoh berikut:

SELECT COUNT(*) FROM `users` WHERE `points` > "12.75"
Salin selepas log masuk

Anda menjangkakan pertanyaan ini akan mengembalikan 2, kerana terdapat dua baris dengan titik lebih daripada 12.75. Walau bagaimanapun, ia mengembalikan 3 kerana nombor titik terapung diwakili dengan bilangan bit yang terhad, yang membawa kepada ralat pembundaran.

Pakar mengesyorkan menggunakan jenis data PERPULUHAN dan bukannya FLOAT atau DOUBLE untuk pengiraan kewangan dan aplikasi lain di mana ketepatan adalah penting. DECIMAL menyimpan nilai sebagai nombor titik tetap, menghapuskan ralat pembundaran yang boleh berlaku dengan nombor titik terapung.

Untuk menggambarkan, mari tukar lajur mata daripada FLOAT kepada PERPULUHAN:

ALTER TABLE `users` MODIFY COLUMN `points` DECIMAL(6,2)
Salin selepas log masuk

Kini, apabila anda menjalankan pertanyaan sekali lagi, anda akan mendapat hasil yang dijangkakan sebanyak 2.

Atas ialah kandungan terperinci Mengapa Perbandingan Titik Terapung MySQL Saya Tidak Tepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan