Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menjamin Bahagian Integer Sentiasa Membulat?

Bagaimana untuk Menjamin Bahagian Integer Sentiasa Membulat?

Patricia Arquette
Lepaskan: 2025-01-20 09:22:09
asal
589 orang telah melayarinya

How to Guarantee Integer Division Always Rounds Up?

Satu cara untuk memastikan pembahagian integer sentiasa dibundarkan

Artikel ini bertujuan untuk mencari cara yang boleh dipercayai untuk memastikan pembahagian integer sentiasa dibundarkan.

Menyemak kaedah asal

Cadangan asal adalah untuk menukar integer kepada nombor titik terapung berketepatan ganda dan membulatkan hasilnya menggunakan fungsi Math.Ceiling(). Walaupun pendekatan ini nampaknya berkesan, penukaran jenis boleh memperkenalkan kerumitan yang tidak perlu dan isu ketepatan yang berpotensi.

Penyelesaian yang mantap

Untuk menyelesaikan masalah ini, penyelesaian yang lebih komprehensif dan mantap disediakan di bawah:

<code class="language-java">public static int DivRoundUp(int dividend, int divisor) {
  if (divisor == 0 || (dividend == Integer.MIN_VALUE && divisor == -1)) throw new ArithmeticException("Invalid input");  // 显式处理异常情况

  int roundedTowardsZeroQuotient = dividend / divisor;
  boolean dividedEvenly = (dividend % divisor) == 0;
  if (dividedEvenly) return roundedTowardsZeroQuotient;

  boolean wasRoundedDown = ((divisor > 0) == (dividend > 0));
  if (wasRoundedDown) return roundedTowardsZeroQuotient + 1;
  else return roundedTowardsZeroQuotient;
}</code>
Salin selepas log masuk

Penjelasan

Fungsi ini mengendalikan semua situasi yang mungkin dengan teliti, termasuk:

  • Kes pengecualian: Ia mengesan dan membuang pengecualian jika pembahagian dengan sifar berlaku, atau integer negatif terkecil (Integer.MIN_VALUE) dibahagikan dengan -1.
  • Penentuan sebut harga: Ia mula-mula mengira hasil bahagi menggunakan operasi aritmetik integer (dividen / pembahagi).
  • Semakan baki: Ia menentukan sama ada pembahagian menghasilkan baki integer. Jika tiada baki, hasil bahagi yang diperoleh dengan pembahagian integer telah dibundarkan ke atas, jadi hasil bahagi dikembalikan.
  • Keputusan bulat: Jika terdapat baki, ia menentukan sama ada hasil bahagi harus dibundarkan ke bawah (disebabkan oleh tanda-tanda yang bertentangan dengan dividen dan pembahagi) atau dibundarkan ke atas (kerana tanda yang sama dividen dan pembahagi). Berdasarkan ini, ia melaraskan hasil bahagi dengan sewajarnya.

Pertimbangan Utama

  • Kedahuluan aritmetik integer: Penyelesaian ini kekal sepenuhnya dalam skop aritmetik integer, seperti yang dikehendaki oleh pernyataan masalah.
  • Kesederhanaan dan kejelasan: Kod ini ringkas dan jelas, menekankan ketepatan dan bukannya teknik.
  • Pengendalian komprehensif: Ia menjangka dan mengendalikan semua situasi yang mungkin untuk memastikan pembundaran yang konsisten.

Dengan mengikut prinsip ini, kami boleh membangunkan kod pembulatan yang teguh dan boleh dipercayai untuk pembahagian integer.

Atas ialah kandungan terperinci Bagaimana untuk Menjamin Bahagian Integer Sentiasa Membulat?. 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