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
Linda Hamiltonasal
2024-11-29 10:45:11404semak imbas

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);
}

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;
}

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!

Kenyataan:
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