zgadzam się z biziclop i Joachim Sauer że brudząc z przecinku i grupowanie separatorów i robi tę pracę ręcznie, może spowodować wiele problemów. Użycie parametru locale w metodzie getInstance wykonuje całą pracę automatycznie. I możesz łatwo wyłączyć tysiąc separatora grupowania, jeśli chcesz.
Poniższa metoda testu jednoczęściowego (która przechodzi) pokazuje to zachowanie w oparciu o język angielski i niemiecki.
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
}
Dla rekordu Numberformat jest klasą abstrakcyjną, więc prawdopodobnie i tak będziesz miał obiekt DecimalFormat. – redcalx
@locster: implementacja 'DecimalFormat' lub' ChoiceFormat' lub nieudokumentowana implementacja JDK-private 'NumberFormat' lub ... –
Dla rekordu ta linia _DecimalFormat format = DecimalFormat.getInstance(); _ nie skompiluj jako metodę getInstance() zwraca obiekt NumberFormat. – Chexpir