Dalam PHP, anda mungkin menghadapi beberapa masalah semasa menanyakan medan titik terapung. Artikel ini menerangkan cara menyelesaikan isu ini untuk memastikan pertanyaan yang tepat bagi medan titik terapung.
Sebelum kita mula menyelesaikan masalah, kita perlu mengetahui sesuatu tentang titik terapung. Data titik terapung mewakili beberapa perpuluhan dan/atau eksponen. Di dalam komputer, ia diwakili dalam tatatanda saintifik: a * 10^n. Antaranya, a ialah bahagian perpuluhan nombor dan n ialah bahagian eksponen. Data titik terapung sangat tepat, tetapi isu ketepatan kadangkala timbul kerana komputer perlu membulatkan apabila mewakilinya.
Apabila menanyakan medan titik terapung, sebab utama masalah ialah pembundaran PHP apabila mewakili jenis titik terapung. Memandangkan komputer menggunakan binari secara dalaman dan data titik terapung biasanya menggunakan perpuluhan, ralat pembundaran kadangkala berlaku apabila menukar titik terapung perpuluhan kepada binari. Ini membawa kepada ralat ketepatan yang mungkin berlaku apabila menanyakan medan titik terapung dalam PHP.
Untuk memastikan ketepatan menyoal medan titik terapung, kami boleh menggunakan dua penyelesaian berikut:
3.1 Perbandingan rentetan
Kaedah ini memastikan data titik terapung menggunakan nilai yang tepat sepenuhnya semasa membandingkan. Perbandingan rentetan menganggap nombor titik terapung sebagai rentetan dan bukannya memahami nilai berangkanya. Ini berfungsi dalam kebanyakan kes, tetapi ia boleh menyebabkan masalah kecekapan jika anda perlu melakukan banyak perbandingan.
Sebagai contoh, katakan kita mempunyai harga medan titik terapung dengan nilai 8.6. Kami boleh menetapkan rentetan pertanyaan kepada:
PILIH * DARI produk WHERE price = '8.6';
Ini akan memastikan bahawa pertanyaan menggunakan nilai tepat yang tepat untuk perbandingan.
3.2 Perbandingan Julat Ralat
Dalam kaedah ini, kami akan membandingkan nombor titik terapung dengan julat ralat dan bukannya membandingkan secara langsung nilai tepatnya. Ini membolehkan kami mengendalikan turun naik kecil yang disebabkan oleh ralat pembundaran dan membandingkan ketepatan nombor titik terapung. Ini boleh dicapai dengan cara berikut:
PILIH * DARI produk DI MANA harga ANTARA 8.5 DAN 8.7;
Pertanyaan ini akan mengembalikan semua produk dengan nilai harga antara 8.5 dan 8.7 (termasuk) produk.
Dalam PHP, setiap jenis titik terapung mempunyai bit tanda, bit eksponen dan bit mantissa yang berbeza, yang bermaksud pelbagai jenis Titik apungan mungkin dibundarkan secara berbeza. Untuk memastikan ketepatan menyoal medan titik terapung, kita boleh menggunakan perbandingan rentetan atau perbandingan julat ralat. Perbandingan rentetan menggunakan nilai tepat sepenuhnya untuk perbandingan, manakala perbandingan julat ralat membolehkan kami membandingkan nombor titik terapung dengan ralat tertentu.
Atas ialah kandungan terperinci medan titik terapung pertanyaan php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!