Hallo,
innerhalb einer Anwendung wollt ich Decimalformat zum runden von Kommazahlen verwenden. Dabei ist mir aufgefallen das hierbei ein Fehler auftritt. Wenn beim Runden eine 5 vorliegt wird einmal auf und einmal abgerundet. Ich habe eine einfache Klasse geschrieben um das zu testen:
Warum passiert dieser Fehler?
innerhalb einer Anwendung wollt ich Decimalformat zum runden von Kommazahlen verwenden. Dabei ist mir aufgefallen das hierbei ein Fehler auftritt. Wenn beim Runden eine 5 vorliegt wird einmal auf und einmal abgerundet. Ich habe eine einfache Klasse geschrieben um das zu testen:
Code:
public class RundenTest {
public static void main(String[] args)
{
DecimalFormat format = new DecimalFormat("0.000");
double d = 12348.4215;
System.out.println(format.format(d));
// Ausgabe --> 12348,422 --> Richtig
d = 12348.4225;
System.out.println(format.format(d));
// Ausgabe --> 12348,422 --> Falsch
d = 12348.4235;
System.out.println(format.format(d));
// Ausgabe --> 12348,424 --> Richtig
d = 12348.4245;
System.out.println(format.format(d));
// Ausgabe --> 12348,424 --> Falsch
d = 12348.4255;
System.out.println(format.format(d));
// Ausgabe --> 12348,426 --> Richtig
d = 12348.4265;
System.out.println(format.format(d));
// Ausgabe --> 12348,426 --> Falsch
d = 12348.4275;
System.out.println(format.format(d));
// Ausgabe --> 12348,428 --> Richtig
d = 12348.4285;
System.out.println(format.format(d));
// Ausgabe --> 12348,428 --> Falsch
d = 12348.4295;
System.out.println(format.format(d));
// Ausgabe --> 12348,430 --> Richtig
}
}
Warum passiert dieser Fehler?