Kaedah yang boleh dipercayai untuk membulatkan pembahagian integer
Bahagian integer membulat ke arah sifar secara lalai, yang boleh menyebabkan masalah. Untuk memastikan kami sentiasa mengumpul, kami memerlukan penyelesaian yang lebih baik.
Dalam contoh yang diberikan dalam artikel, menukar operan kepada nombor titik terapung berketepatan dua kali dan menggunakan Math.Ceiling()
ialah penyelesaian yang mungkin, tetapi ini dianggap tidak standard dan tidak cekap.
Kami mengesyorkan kaedah berikut:
1. Tentukan spesifikasi dengan jelas
2. Reka bentuk algoritma yang boleh diuji
Pecahkan masalah kepada langkah yang lebih kecil:
3. Laksanakan penyelesaiannya
Berikut ialah contoh pelaksanaan:
<code class="language-java">public static int DivRoundUp(int dividend, int divisor) { if (divisor == 0) throw new IllegalArgumentException("除数为零"); if (divisor == -1 && dividend == Integer.MIN_VALUE) throw new ArithmeticException("整数溢出"); int quotient = dividend / divisor; boolean dividedEvenly = (dividend % divisor) == 0; if (dividedEvenly) return quotient; boolean roundedDown = ((divisor > 0) == (dividend > 0)); return roundedDown ? quotient + 1 : quotient; }</code>
Algoritma ini mematuhi tingkah laku yang ditentukan untuk membulatkan semua hasil pembahagian yang tidak boleh dibahagikan. Ia juga mengendalikan ralat limpahan dan bahagi-dengan-sifar dengan baik. Walaupun ini bukan penyelesaian yang paling elegan, ia jelas, boleh diuji dan betul.
Atas ialah kandungan terperinci Bagaimanakah Kita Boleh Memastikan Bahagian Integer Sentiasa Dibundarkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!