Ich stimme mit biziclop und Joachim Sauer dass mit dezimal Messing und Gruppierungs Separatoren und diese Arbeit manuell zu tun, eine Menge Probleme verursachen kann. Die Verwendung des Gebietsschema-Parameters in der NumberFormat
getInstance-Methode erledigt automatisch alle Aufgaben für Sie. Und Sie können das Tausendergruppentrennzeichen leicht deaktivieren, wenn Sie es wünschen.
Die folgende Junit-Testmethode (die besteht) zeigt dieses Verhalten basierend auf dem englischen und deutschen Gebietsschema.
public void testFormatter() {
DecimalFormat formatter = (DecimalFormat) DecimalFormat.getInstance(Locale.UK);
assertEquals('.', formatter.getDecimalFormatSymbols().getDecimalSeparator()); //true
formatter = (DecimalFormat) DecimalFormat.getInstance(Locale.GERMAN);
assertEquals(',', formatter.getDecimalFormatSymbols().getDecimalSeparator()); //true
//and in case you want another decimal seperator for a specific locale
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
decimalFormatSymbols.setDecimalSeparator('.');
formatter.setDecimalFormatSymbols(decimalFormatSymbols);
assertEquals('.', formatter.getDecimalFormatSymbols().getDecimalSeparator()); //true
}
Für den Datensatz ist Numberformat eine abstrakte Klasse, so dass Sie wahrscheinlich sowieso ein DecimalFormat-Objekt haben. – redcalx
@occster: Entweder ein 'DecimalFormat' oder ein' ChoiceFormat' oder eine undokumentierte JDK-private 'NumberFormat' Implementierung oder ... –
Für den Datensatz ist diese Zeile _DecimalFormat Format = DecimalFormat.getInstance(); _ nicht Kompilieren, da die Methode getInstance() ein NumberFormat-Objekt zurückgibt. – Chexpir