Internalização de Java - DecimalFormat específico de local
Por padrão, o objeto DecimalFormat está usando o locale da JVM. Podemos alterar a localidade padrão ao criar o objeto DecimalFormat usando a classe NumberFormat. No exemplo abaixo, usaremos o mesmo padrão para duas localidades diferentes e você pode identificar a diferença na saída.
IOTester.java
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;
public class I18NTester {
   public static void main(String[] args) {
      String pattern = "###.##";
      double number = 123.45;
      Locale enlocale  = new Locale("en", "US");
      Locale dalocale  = new Locale("da", "DK");
      DecimalFormat decimalFormat = (DecimalFormat) NumberFormat.getNumberInstance(enlocale);
      decimalFormat.applyPattern(pattern);
      System.out.println(decimalFormat.format(number));
   
      decimalFormat = (DecimalFormat) NumberFormat.getNumberInstance(dalocale);
      decimalFormat.applyPattern(pattern);
      System.out.println(decimalFormat.format(number));     
   }
} 
    Resultado
Irá imprimir o seguinte resultado.
123.45
123,45 
    Impressão