Sono d'accordo con biziclop e Joachim Sauer che pasticciano con decimale e separatori di raggruppamento e di fare questo lavoro manualmente, può causare un sacco di problemi. L'uso del parametro locale nel metodo getInstance NumberFormat
fa tutto il lavoro automaticamente. E puoi facilmente disabilitare il separatore di migliaia di gruppi, se lo desideri.
Il seguente metodo di test junit (che passa) mostra questo comportamento in base alle impostazioni internazionali inglese e tedesco.
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
}
fonte
2011-01-17 13:37:27
Per la cronologia, Numberformat è una classe astratta, quindi probabilmente avrai comunque un oggetto DecimalFormat. – redcalx
@locster: un 'DecimalFormat' o un' ChoiceFormat' o un'implementazione JDK-Number 'NumberFormat' non documentata o ... –
Per la registrazione, questa riga _DecimalFormat format = DecimalFormat.getInstance(); _ non compilare come il metodo getInstance() restituisce un oggetto NumberFormat. – Chexpir