Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Membulatkan Secara Cekap kepada Gandaan Terdekat dalam C ?

Bagaimanakah Saya Boleh Membulatkan Secara Cekap kepada Gandaan Terdekat dalam C ?

Linda Hamilton
Lepaskan: 2024-11-29 10:45:11
asal
339 orang telah melayarinya

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

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

Walaupun pelaksanaan ini kelihatan mudah, ia mempunyai had:

  • Ia hanya berfungsi untuk nombor positif.
  • Ia memerlukan pengiraan yang rumit, yang berpotensi memperkenalkan ralat pusingan.

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

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

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!

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