java - puntos - Formato de moneda sin símbolo de moneda
numberformat java 7 (5)
Establézcalo con una cadena vacía en su lugar:
DecimalFormat formatter = (DecimalFormat) NumberFormat.getCurrencyInstance(Locale.US);
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setCurrencySymbol(""); // Don''t use null.
formatter.setDecimalFormatSymbols(symbols);
System.out.println(formatter.format(12.3456)); // 12.35
Estoy usando NumberFormat.getCurrencyInstance(myLocale)
para obtener un formato de moneda personalizado para una configuración regional dada por mí. Sin embargo, esto siempre incluye el símbolo de moneda que no quiero, solo quiero el formato de número de moneda adecuado para mi localidad sin el símbolo de moneda.
Al hacer un format.setCurrencySymbol(null)
una excepción ...
Los siguientes trabajos. Es un poco feo, pero cumple el contrato:
NumberFormat nf = NumberFormat.getCurrencyInstance();
DecimalFormatSymbols decimalFormatSymbols = ((DecimalFormat) nf).getDecimalFormatSymbols();
decimalFormatSymbols.setCurrencySymbol("");
((DecimalFormat) nf).setDecimalFormatSymbols(decimalFormatSymbols);
System.out.println(nf.format(12345.124).trim());
También puede obtener el patrón del formato de moneda, eliminar el símbolo de moneda y reconstruir un nuevo formato a partir del nuevo patrón:
NumberFormat nf = NumberFormat.getCurrencyInstance();
String pattern = ((DecimalFormat) nf).toPattern();
String newPattern = pattern.replace("/u00A4", "").trim();
NumberFormat newFormat = new DecimalFormat(newPattern);
System.out.println(newFormat.format(12345.124));
Tal vez solo podamos usar reemplazar o subcadena para tomar solo la parte numérica de la cadena formateada.
NumberFormat fmt = NumberFormat.getCurrencyInstance(Locale.getDefault());
fmt.format(-1989.64).replace(fmt.getCurrency().getSymbol(), "");
//fmt.format(1989.64).substring(1); //this doesn''t work for negative number since its format is -$1989.64
hay una necesidad de un formato de moneda "SIN el símbolo", cuando se obtienen informes o vistas enormes y casi todas las columnas representan valores monetarios, el símbolo es molesto, no es necesario el símbolo, pero sí para el separador de miles y la coma decimal. tu necesitas
new DecimalFormat("#,##0.00");
y no
new DecimalFormat("$#,##0.00");
DecimalFormat df = new DecimalFormat();
df.setMinimumFractionDigits(2);
String formatted = df.format(num);
Funciona con muchos tipos para num
, pero no olvide representar la moneda con BigDecimal .
Para las situaciones en las que su num
puede tener más de dos dígitos después del punto decimal, puede usar df.setMaximumFractionDigits(2)
para mostrar solo dos, pero eso solo podría ocultar un problema subyacente a quien esté ejecutando la aplicación.