Ich versuche einen Float auf 2 Dezimalstellen abzurunden.
Ich habe 2 float Werte:
1.985
29.294998
Beide müssen aufgerundet werden, damit ich Folgendes erhalte:
1.99
29.30
Wenn ich die folgende Methode verwende:
public static Float precision(int decimalPlace, Float d) {
BigDecimal bd = new BigDecimal(Float.toString(d));
bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP);
return bd.floatValue();
}
Das Ergebnis ist:
1.99
29.29
Antworten:
11 für die Antwort № 1Da verwendest du BigDecimal.ROUND_HALF_UP
, 29.294998
wird auf gerundet 29.29
. Vielleicht möchten Sie verwenden BigDecimal.ROUND_UP
stattdessen.
Prüfen BigDecimal doc Weitere Informationen zu jeder Rundung zur Verfügung.
3 für die Antwort № 2
An Stelle von
bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP);
Benutzen
bd = bd.setScale(decimalPlace, BigDecimal.ROUND_CEILING);
Über ROUND_CEILING
Rundungsmodus zum Runden auf positive Unendlichkeit. Wenn das BigDecimal ist positiv, verhält sich wie bei ROUND_UP; wenn negativ, verhält sich wie für ABRUNDEN. Beachten Sie, dass dieser Rundungsmodus niemals die berechneter Wert.
Sie können verwenden DecimalFormat
falls Sie es wollen.
3 für die Antwort № 3
Da Sie immer aufrunden wollen, ist das, was Sie wollen, einfach nicht BigDecimal.ROUND_HALF_UP
aber stattdessen BigDecimal.ROUND_UP
oder BigDecimal.ROUND_CEILING
.
Benutzen BigDecimal.ROUND_UP
wenn du willst Negativ Zahlen zum Abrunden (-29.294998 bis -29.30).
Benutzen BigDecimal.ROUND_CEILING
wenn du willst Negativ Zahlen zum Aufrunden (-29.294998 bis -29.29).
Bei positiven Zahlen runden beide die Zahlen auf, die Sie versuchen (dh aufrunden).
1 für die Antwort № 4
Sie verwenden ROUND_HALF_UP
, wenn Sie verwenden sollten ROUND_UP
. ROUND_HALF_UP
Rundet mit der angegebenen Genauigkeit auf die nächstliegende Zahl und rundet auf, um Unentschieden zu lösen (dh 1,235 Runden auf 1,24).
0 für die Antwort № 5
ROUND_HALP_UP
Rundungsmodus zum Runden in Richtung "nächster Nachbar"es sei denn, beide Nachbarn sind gleich weit voneinander entfernt. In diesem Fall runden Sie auf. Verhält sich wie bei RoundingMode.UP, wenn der verworfene Anteil> = 0,5 ist; Ansonsten verhält es sich wie für RoundingMode.DOWN. Beachten Sie, dass dies der in der Schule übliche Rundungsmodus ist.
Eine der Prüfungen, die durchgeführt wird, ist, ob dieDie Größe des verbleibenden Abfalls (2 * 4998) ist größer als der Divisor (10000). In diesem Fall ist es nicht so bestimmt, näher am unteren Ende zu sein. Wenn Sie 29.295001 versuchen, wird für ROUND_HALP_UP auf 29,3 gerundet.