Estoy de acuerdo con biziclop y Joachim Sauer que jugar con decimales y separadores de agrupamiento y hacer este trabajo de forma manual, puede causar muchos problemas. El uso del parámetro locale en el método getInstance NumberFormat
hace todo el trabajo para usted automáticamente. Y puede desactivar fácilmente el separador de mil agrupaciones, si así lo desea.
El siguiente método de prueba junit (que pasa) muestra este comportamiento según la configuración regional en inglés y alemán.
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
}
Para el registro, Numberformat es una clase abstracta, por lo que probablemente tenga un objeto DecimalFormat de todos modos. – redcalx
@locster: ya sea un 'DecimalFormat' o un' ChoiceFormat' o una implementación 'NumberFormat' JDK privada no documentada o ... –
Para el registro, esta línea _DecimalFormat format = DecimalFormat.getInstance(); _ no compilar como el método getInstance() devuelve un objeto NumberFormat. – Chexpir