/ / Float auf 2 Dezimalstellen aufrunden - Java, Fließkomma, Dezimal, Rundung, BigDecimal

Float Runde bis zu 2 Dezimalstellen Java - Java, Fließkomma, Dezimal, Rundung, Bigdezimal

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 № 1

Da 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.