NumberFormat und RoundingMode.HALF_UP

B

Bens0n

Gast
Hallo,

ich habe ein Problem mit NumberFormat und dem RoundingMode.HALF_UP. Die JavaDocs sagen, dass HALF_UP alles >=0.5 aufrundet, wie man es auch vom Alltag her kommt. Ich will mit dem folgenden Code meine Zahlen auf eine Nachkommastelle runden. Das klappt auch soweit, nur bei Zahlen wie 2.55, 3.55, x.55 rundet er nicht wie erwartet auf 2.6, 3.6, x.6 sondern auf x.5.
Verstehe ich hier was falsch? Ich würde erwarten, dass 2.55 auf 2.6 gerundet wird. Hier der Code-Ausschnitt aus meinem Unit-Test:

Java:
NumberFormat formatter = NumberFormat.getNumberInstance(Locale.GERMANY);
formatter.setMinimumFractionDigits(1);
formatter.setMaximumFractionDigits(1);
formatter.setRoundingMode(RoundingMode.HALF_UP);

assertEquals("2,6", NoteUtil.formatNote(2.6f));   // Korrekt!
assertEquals("2,6", NoteUtil.formatNote(2.63f)); // Korrekt!
assertEquals("2,6", NoteUtil.formatNote(2.64f)); // Korrekt!
assertEquals("2,6", NoteUtil.formatNote(2.55f)); // Hier kommt 2,5 anstatt 2,6 zurück!
assertEquals("2,6", NoteUtil.formatNote(2.56f)); // Korrekt!
assertEquals("2,6", NoteUtil.formatNote(2.57f)); // Korrekt!
assertEquals("2,6", NoteUtil.formatNote(2.57f)); // Korrekt!

Gibt man 2.551f an dann rundet er auch korrekt auf 2.6. Kann mir jemand verraten warum das nicht wie erwartet klappt bzw. was ich hier übersehe? Danke!

Viele Grüße,
Ben
 

Ähnliche Java Themen

Neue Themen


Oben