Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Cekap Membundarkan ke Gandaan Terdekat dalam C ?

Bagaimana untuk Cekap Membundarkan ke Gandaan Terdekat dalam C ?

DDD
Lepaskan: 2024-11-29 03:10:09
asal
257 orang telah melayarinya

How to Efficiently Round Up to the Nearest Multiple in C  ?

Pendekatan Terbaik untuk Membundarkan Hingga Gandaan dalam C

Dalam C , membundarkan nombor kepada gandaan terdekat bagi nombor yang diberikan boleh dicapai dengan berkesan menggunakan teknik berikut:

int roundUp(int numToRound, int berbilang)<br>{</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">if (multiple == 0)
    return numToRound;

int remainder = numToRound % multiple;
if (remainder == 0)
    return numToRound;

return numToRound + multiple - remainder;
Salin selepas log masuk

}

Kaedah ini menggunakan aritmetik integer asas untuk mengira gandaan terdekat bagi nombor positif. Ia mudah dan berfungsi dengan cekap.

Mengendalikan Nombor Negatif

Apabila membundarkan nombor negatif, takrifan "naik" menjadi samar-samar. Bergantung pada aplikasi khusus, tafsiran berbeza untuk pembundaran mungkin sesuai. Penyelesaian yang disediakan menganggap pembundaran bermaksud hasil yang sentiasa lebih besar daripada atau sama dengan nombor input:

int roundUp(int numToRound, int multiple)<br>{</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">if (multiple == 0)
    return numToRound;

int remainder = abs(numToRound) % multiple;
if (remainder == 0)
    return numToRound;

if (numToRound < 0)
    return -(abs(numToRound) - remainder);
else
    return numToRound + multiple - remainder;
Salin selepas log masuk

}

Fungsi diubah suai ini memastikan bahawa tanpa mengira daripada tanda nombor input, hasilnya tidak akan pernah kurang daripada input itu sendiri.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Membundarkan ke Gandaan Terdekat dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Artikel sebelumnya:Mengapa `std::queue::pop()` Tidak Mengembalikan Nilai? Artikel seterusnya:Bagaimanakah Saya Boleh Mencipta Iterator Meratakan dalam C untuk Berulang di Atas Bekas Bersarang?
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
Isu terkini
Topik-topik yang berkaitan
Lagi>
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan