Ich würde es nicht um einen Fehler nennen, wenn du mich nicht auf eine Spezifikation verweisen, der sagt, das den Modus Rundung String.format
Methode sollte verwendet werden. Es scheint, dass die 1.6 JRE UP oder HALF_UP als RoundingMode verwendet. In Android wird jedoch der HALF_EVEN-Modus verwendet, der auch als Standardmodus für DecimalFormat erscheint. Dies ist der Code, den ich mit JRE verwendet habe, die oben zu testen:
import java.util.Locale;
import java.text.DecimalFormat;
import java.math.RoundingMode;
public class Test {
public static void main(String [] args) {
Locale locale = new Locale("de","DE");
String str = String.format(locale,"%.1f", 0.45);
System.out.println(str);
System.out.println(String.format("%.1f", 0.45));
DecimalFormat df = new DecimalFormat("#.#");
System.out.println(df.format(0.45));
System.out.println(df.getRoundingMode());
df.setRoundingMode(RoundingMode.HALF_UP);
System.out.println(df.format(0.45));
}
}
Es scheint, dass das Gebietsschema nichts mit dem Rundungsmodus zu tun hat. Leider scheint DecimalFormat in Android keine Rundungsmodi zu unterstützen, so dass Sie nicht den gleichen Code ausführen können wie er ist.
Ich wäre auch daran interessiert, den gleichen Code in JRE 1.5 (die Einstellung des Rundenmodus nicht unterstützt) zu laufen, aber ich habe keine geeignete Umgebung in meinem Rechner.