Membundarkan Pembahagian Integer Ke Atas dalam C/C
Apabila membahagikan dua integer x dan y dalam C/C , hasil q = x/ y menghasilkan lantai setara titik terapung. Walau bagaimanapun, terdapat senario di mana ia mungkin wajar untuk mendapatkan siling sebaliknya, seperti ceil(10/5) = 2 atau ceil(11/5) = 3.
Pendekatan Tidak Cekap untuk Bahagian Siling
Satu pendekatan biasa untuk pembahagian siling melibatkan membandingkan dan menambah lantai nilai:
q = x / y; if (q * y < x) ++q;
Walaupun berkesan, kaedah ini memerlukan perbandingan dan pendaraban tambahan, yang boleh memberi kesan kepada prestasi.
Algoritma Bahagian Siling Cekap
Untuk memintas batasan pendekatan tidak cekap, pertimbangkan algoritma berikut untuk nombor positif di mana q ialah siling bagi x dibahagikan dengan y:
unsigned int x, y, q; // Round up using (x + y - 1) / y q = (x + y - 1) / y;
Algoritma Limpahan-Pengelak Alternatif
Sebagai alternatif, untuk mengelakkan potensi limpahan dalam x y, gunakan formula berikut:
// Round up using 1 + ((x - 1) / y) if x != 0 q = 1 + ((x - 1) / y);
Dengan menggunakan algoritma yang cekap ini, anda boleh mengelakkan perangkap perbandingan tambahan, pendaraban dan tuangan titik terapung, menghasilkan operasi pembahagian siling yang lebih pantas dan lebih tepat.
Atas ialah kandungan terperinci Bagaimana untuk Membundarkan Bahagian Integer dengan Cekap dalam C/C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!