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>
Penjelasan
Fungsi ini mengendalikan semua situasi yang mungkin dengan teliti, termasuk:
Pertimbangan Utama
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!