Locale locale = ...; String simbolo = ...; DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance(locale); dfs.setCurrencySymbol(simbolo); String pattern = (Constantes.DIVISAS_SIMBOLO_FINAL.indexOf(simbolo) != -1) ? "#,##0.## ¤" : "¤ #,##0.##"; DecimalFormat df = new DecimalFormat(pattern, dfs);
El truco está en hacer uso de un DecimalFormatSymbols y un «¤» en el patrón de formateo. Otra cosa que también tendremos que tener en cuenta si para la moneda que vamos a mostrar el precio el símbolo se pone antes o después de él según la convención de esa moneda. Una vez tenemos el formateador de precio con el símbolo lo usamos de la siguiente forma:
float importe = 13.19; df.format(importe);
Y obtendremos «13,19 €».
La lógica de obtener el DecimalFormat estaría muy bien tenerlo en una clase de utilidad que lo construya para poder usarlo de diferentes sitios evitando duplicar código.