Ich analysierte Fall, wo DecimalFormat
gerundet eine BigDecimal
Nummer und auf andere Maschine, ist es abgeschnitten.DecimalFormat führt zu zwei verschiedenen Ergebnissen auf verschiedenen Maschinen
Ich habe alle Konfigurationen auf beiden Maschinen überprüft (und alle sind gleich, nehme ich an). Der einzige Unterschied, den ich herausgefunden habe, ist JDK-Version.
Maschine 1 läuft auf JDK1.6. Aber, ich habe dasselbe mit JDK1.7 auf Maschine 1 versucht, es funktioniert dasselbe wie mit JDK1.6.
Maschine 2 auf JDK1.7 läuft
Es folgt der Code-Schnipsel:
DecimalFormat decimalFormat = new DecimalFormat("#,###.00");
BigDecimal anObject = new BigDecimal("3.8880");
String str = decimalFormat.format(((Number)anObject).doubleValue());
System.out.println(str);
On Machine 1 Ergebnis ist: 3,39
On Machine 2 Ergebnis: 3,38
Ich sehe nicht, wie die Zahl 3.8880 gerundet oder auf 3,38 oder 3,39 abgeschnitten werden konnte. Meinst du 3.88/3.89? Oder hast du den Test nicht richtig gemacht? –
Versuchen Sie, auf der Eingabeaufforderung "Java-Version" auszuführen. Vielleicht nur ein JVM-Bug. – Aris2World