Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Kita Boleh Memastikan Pembundaran Ke Atas dalam Bahagian Integer?

Bagaimanakah Kita Boleh Memastikan Pembundaran Ke Atas dalam Bahagian Integer?

Susan Sarandon
Lepaskan: 2025-01-20 09:27:09
asal
631 orang telah melayarinya

How Can We Ensure Upward Rounding in Integer Division?

Kaedah yang boleh dipercayai untuk membulatkan pembahagian integer

Operasi integer boleh menjadi rumit, dan pembahagian tidak terkecuali. Walaupun tingkah laku lalai untuk pembahagian integer adalah untuk membundarkan ke arah sifar, terdapat situasi di mana pembundaran ke atas adalah lebih baik. Artikel ini meneroka kaedah untuk melaksanakan pembundaran dalam pembahagian integer, menangani kelemahan penyelesaian sedia ada dan mencadangkan pelaksanaan yang mantap.

Pernyataan Masalah

Matlamatnya adalah untuk melaksanakan fungsi pembahagian integer yang sentiasa membulatkan keputusan. Kaedah sedia ada melibatkan penuangan ke nombor titik terapung berketepatan dua kali dan menggunakan Math.Ceiling(), yang boleh menyusahkan kerana operasi titik terapung terlibat.

Penyelesaian

Pengendalian aritmetik integer yang teliti adalah penting. Dengan mentakrifkan tingkah laku yang diingini dengan teliti dan memecahkan masalah kepada langkah yang boleh diurus, anda boleh mereka bentuk penyelesaian yang lebih elegan dan cekap.

  1. Spesifikasi:
  • Jika pembahagi adalah sifar, fungsi harus membuang pengecualian.
  • Pengecualian juga perlu dibuang jika dividen ialah nilai integer terkecil dan pembahagi ialah -1.
  • Untuk pembahagian genap, hasilnya hendaklah hasil bahagi integer.
  • Jika tidak, hasilnya hendaklah integer terkecil lebih besar daripada hasil bagi.
  1. Reka Bentuk:

Untuk melaksanakan spesifikasi ini, kita perlu mengira hasil bahagi integer, menentukan sama ada pembahagian itu genap dan menentukan sama ada hendak dibundarkan ke atas atau ke bawah.

  1. Kod:
<code class="language-java">public static int DivRoundUp(int dividend, int divisor) {
  if (divisor == 0) throw new ArithmeticException("除以零");
  if (divisor == -1 && dividend == Integer.MIN_VALUE) throw new ArithmeticException("溢出错误");

  int roundedQuotient = dividend / divisor;
  boolean dividedEvenly = (dividend % divisor) == 0;

  if (dividedEvenly) {
    return roundedQuotient;
  } else {
    boolean roundedDown = ((divisor > 0) == (dividend > 0));
    if (roundedDown) {
      return roundedQuotient + 1;
    } else {
      return roundedQuotient;
    }
  }
}</code>
Salin selepas log masuk

Penyelesaian ini mematuhi spesifikasi dan agak mudah difahami. Ia mengelakkan hantaran kepada nombor titik terapung berketepatan dua kali dan pengendalian ralat yang kompleks, menjadikannya cekap dan teguh.

Atas ialah kandungan terperinci Bagaimanakah Kita Boleh Memastikan Pembundaran Ke Atas dalam Bahagian Integer?. 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