separador numeros numberformat miles ingresar declarar decimales como java locale number-formatting

numberformat - numeros decimales en java



Separador decimal en NumberFormat (3)

Dada una configuración regional java.text.NumberFormat:

NumberFormat numberFormat = NumberFormat.getInstance();

¿Cómo puedo obtener el carácter utilizado como separador decimal (si es una coma o un punto) en ese formato de número? ¿Cómo puedo modificar esta propiedad sin tener que usar el nuevo formato DecimalFormat (formato)?

Gracias


Estoy de acuerdo con biziclop y con Joachim Sauer en que jugar con separadores decimales y agrupados y hacer este trabajo manualmente puede causar muchos problemas. El uso del parámetro de configuración regional en el método NumberFormat getInstance realiza todo el trabajo automáticamente. Y puede deshabilitar fácilmente el separador de agrupación de mil, si lo desea.

El siguiente método de prueba junit (que pasa) muestra este comportamiento basado en 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 }


La clase auxiliar DecimalFomatSymbols es lo que está buscando:

DecimalFormat format=DecimalFormat.getInstance(); DecimalFormatSymbols symbols=format.getDecimalFormatSymbols(); char sep=symbols.getDecimalSeparator();

Para establecer sus símbolos según sea necesario:

//create a new instance DecimalFormatSymbols custom=new DecimalFormatSymbols(); custom.setDecimalSeparator('',''); format.setDecimalFormatSymbols(custom);

EDITAR: esta respuesta solo es válida para DecimalFormat , y no para NumberFormat como se requiere en la pregunta. De todos modos, ya que puede ayudar al autor, lo dejaré aquí.