Zuverlässige Methode zum Aufrunden der Ganzzahldivision
Ganzzahldivisionen runden standardmäßig gegen Null, was zu Problemen führen kann. Um sicherzustellen, dass wir immer aufrunden, brauchen wir eine bessere Lösung.
In dem im Artikel bereitgestellten Beispiel ist die Konvertierung des Operanden in eine Gleitkommazahl mit doppelter Genauigkeit und die Verwendung von Math.Ceiling()
eine mögliche Problemumgehung, die jedoch als nicht standardmäßig und ineffizient angesehen wird.
Wir empfehlen die folgenden Methoden:
1. Spezifikationen klar definieren
2. Entwerfen Sie testbare Algorithmen
Teilen Sie das Problem in kleinere Schritte auf:
3. Implementieren Sie die Lösung
Das Folgende ist eine Beispielimplementierung:
<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>
Dieser Algorithmus entspricht dem spezifizierten Verhalten des Aufrundens aller nicht teilbaren Divisionsergebnisse. Es bewältigt auch Überlauf- und Division-durch-Null-Fehler sehr gut. Dies ist zwar nicht die eleganteste Lösung, aber sie ist klar, überprüfbar und korrekt.
Das obige ist der detaillierte Inhalt vonWie können wir sicherstellen, dass bei der Ganzzahldivision immer aufgerundet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!