Gibt es eine Java-Funktion oder util class
das die Rundung auf diese Weise vornimmt: func(3/2) = 2
Math.ceil()
hilft nicht, was eigentlich der Fall sein sollte. Ich bin mir bewusst, dass BigDecimal
aber sie brauchen es nicht.
Gibt es eine Java-Funktion oder util class
das die Rundung auf diese Weise vornimmt: func(3/2) = 2
Math.ceil()
hilft nicht, was eigentlich der Fall sein sollte. Ich bin mir bewusst, dass BigDecimal
aber sie brauchen es nicht.
Wenn du einfach durch 2 teilen willst, kannst du das tun:
n - n / 2
Und ganz allgemein:
(n - 1) / d + 1 == (n + d - 1) / d
Dies gilt für nichtnegative ganze Zahlen. Wie man es auf negative ganze Zahlen ausdehnt, hängt davon ab, was man mit "rundet auf diese Weise" meint. Die Division ganzer Zahlen wird gegen Null gerundet, während Math.ceil()
rundet auf und Math.floor()
Runden ab. Zum Beispiel n / 2 != (int) Math.floor(n / 2.0)
para n == -5
.
Wenn Sie immer aufrunden wollen, können Sie Math.ceil()
wie in diese Antwort .
Die Antwort von Randy Proctor gefällt mir am besten. Hier in mehr Details:
Wenn Sie reale Rundungen (z. B. 3/2 -> 2, aber 17 / 7 -> 2) mit ganzen Zahlen > 0 vornehmen wollen: verwenden Sie (dividend + (divisor / 2)) / divisor
代わりに dividend / divisor
.
Wenn die Dividende eine beliebige ganze Zahl sein kann (d.h. negativ erlaubt): (dividend >= 0) ? ((dividend + divisor / 2) / divisor) : ((dividend - divisor / 2) / divisor)
.
Wenn der Dividend eine beliebige ganze Zahl und der Divisor eine beliebige ganze Zahl außer 0 ist: (dividend >= 0) ? ((dividend + Math.abs(divisor) / 2) / divisor) : ((dividend - Math.abs(divisor) / 2) / divisor)
.
(Beachten Sie, dass die Addition und Subtraktion einen Umbruch verursachen kann, der sonst nicht auftreten würde, wodurch das Ergebnis falsch wird).
Hier ist eine Methode, die ich erstellt habe, um Int-Divisionen zu behandeln, ohne Math Round und Casting in Float zu verwenden. Dies funktioniert für positive und negative Zahlen. Es funktioniert, indem die Hälfte des Nenners addiert wird, um die Abrundung auszugleichen
public static int div_Int(int num, int den){
if(num > 0 && den > 0 || num < 0 && den < 0 ){
return ((2*num)+ den)/(2*den);
}else{
return ((2*num)- den)/(2*den);
}
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.