Bagaimana untuk Membundarkan Bahagian Integer dengan Cekap dalam C/C?

Linda Hamilton
Lepaskan: 2024-11-24 04:29:10
asal
817 orang telah melayarinya

How to Efficiently Round Up Integer Division in C/C  ?

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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);
Salin selepas log masuk

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!

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