Ketidaktepatan Bahagian (/) dalam PostgreSQL
Apabila melakukan pembahagian dalam PostgreSQL, adalah penting untuk mempertimbangkan jenis data yang terlibat untuk memastikan hasil yang tepat . Dalam kes yang diterangkan, di mana matlamatnya adalah untuk menentukan kuantiti perisian yang akan dijual untuk memulihkan kos pembangunan, pembahagian integer boleh membawa kepada hasil yang salah.
Dalam pertanyaan yang diberikan, dev_cost dan sell_cost ialah kedua-dua jenis integer. Pembahagian integer memotong hasil ke arah sifar, bermakna pembahagian 16000 dengan 7500 menghasilkan 2 dan bukannya 3 yang dijangkakan.
Untuk mendapatkan hasil yang tepat, sekurang-kurangnya satu daripada nilai mesti dibuang ke titik terapung jenis seperti apungan atau perpuluhan. Sebagai alternatif, sintaks ::perpuluhan boleh digunakan untuk menukar dev_cost secara eksplisit kepada perpuluhan secara tersirat. Ini memaksa pembahagian menjadi operasi titik terapung, menghasilkan pembahagian yang tidak dipotong.
Pertimbangkan pertanyaan diubah suai berikut:
select dev_cost::decimal / sell_cost from software ;
Sebagai alternatif, fungsi ceil() boleh digunakan untuk membundarkan hasil kepada integer terdekat:
select ceil(dev_cost::decimal / sell_cost) from software ;
Dengan menggunakan teknik ini, hasil pembahagian yang tepat boleh dicapai, memastikan pengiraan perniagaan berdasarkan pertanyaan pangkalan data adalah kukuh.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelak Bahagian Integer Tidak Tepat dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!