Membundar Hingga Gandaan Terdekat: Analisis Komprehensif dalam C
Tugas membundarkan nombor kepada gandaan terdekat nombor lain adalah perkara biasa dalam pengaturcaraan. Dalam artikel ini, kami akan meneroka pendekatan terbaik untuk menyelesaikan tugas ini dalam C .
Pelaksanaan Asal
Satu kaedah yang biasa digunakan ialah:
int roundUp(int numToRound, int multiple) { if (multiple == 0) { return numToRound; } int roundDown = ((int)(numToRound) / multiple) * multiple; int roundUp = roundDown + multiple; int roundCalc = roundUp; return (roundCalc); }
Walaupun pelaksanaan ini kelihatan mudah, ia mempunyai had:
Penyelesaian yang Diperbaiki
Pendekatan yang lebih baik adalah dengan gunakan operator modulus untuk mengira bakinya. Jika bakinya bukan sifar, kami menambah perbezaan antara baki dan gandaan kepada nombor asal untuk membundarkannya.
int roundUp(int numToRound, int multiple) { if (multiple == 0) { return numToRound; } int remainder = numToRound % multiple; if (remainder == 0) { return numToRound; } return numToRound + multiple - remainder; }
Kes untuk Nombor Negatif
Bergantung pada tafsiran "naik" untuk nombor negatif, versi negatif fungsi mungkin perlu.
int roundUp(int numToRound, int multiple) { 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; } }
Pelaksanaan ini mengendalikan kedua-dua nombor positif dan negatif dengan betul dengan mengambil kira tanda input. Ia juga menggunakan aritmetik integer, menjadikannya cekap dan tepat.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membulatkan Secara Cekap kepada Gandaan Terdekat dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!