Hallo,
ich möchte gerne eine Kommazahl auf 0 Nachkommastellen kaufmännisch runden (also ab 0.5 aufrunden). Erstmal verstehe ich nicht warum man bei MathContext "1" als Precision angeben muss, ich dachte das steht für eine Nachkommastelle, bewirkt aber eine Rundung auf 0 Nachkommastellen. Das Problem ist jetzt, dass sich scheinbar nur runden lässt wenn vor dem Komma mindestens eine 1 steht. Bei 1.5 würde ich erwarten, dass auf 2 aufgerundet wird (passiert auch) und bei 0.5 würde ich erwarten das auf 1 aufgerundet wird. Hier bleibt es aber bei 0.5... Für mich ist das ein Bug oder kann mir das jemand erklären?
Danke.
ich möchte gerne eine Kommazahl auf 0 Nachkommastellen kaufmännisch runden (also ab 0.5 aufrunden). Erstmal verstehe ich nicht warum man bei MathContext "1" als Precision angeben muss, ich dachte das steht für eine Nachkommastelle, bewirkt aber eine Rundung auf 0 Nachkommastellen. Das Problem ist jetzt, dass sich scheinbar nur runden lässt wenn vor dem Komma mindestens eine 1 steht. Bei 1.5 würde ich erwarten, dass auf 2 aufgerundet wird (passiert auch) und bei 0.5 würde ich erwarten das auf 1 aufgerundet wird. Hier bleibt es aber bei 0.5... Für mich ist das ein Bug oder kann mir das jemand erklären?
Danke.
Java:
public void testRound() {
MathContext theRoundingContext = new MathContext(1, RoundingMode.HALF_UP);
assertEquals(BigDecimal.valueOf(1), BigDecimal.valueOf(1.4).round(theRoundingContext));
assertEquals(BigDecimal.valueOf(2), BigDecimal.valueOf(1.5).round(theRoundingContext));
//ab hier schlaegt alles fehl...
assertEquals(BigDecimal.valueOf(0), BigDecimal.valueOf(0.4).round(theRoundingContext));//schlaegt fehl, hier kommt 0.4 raus
assertEquals(BigDecimal.valueOf(1), BigDecimal.valueOf(0.5).round(theRoundingContext));//schlaegt fehl, hier kommt 0.5 raus
}