mastering - Formattare l'importo negativo di USD con un segno meno, non tra parentesi(Java)



github mastering bitcoin programming the open blockchain (5)

Da quando ho affrontato nuovamente questo problema, ho fatto qualche ricerca e ho trovato una soluzione più resiliente fornita da una ICU :

NumberFormatter
  .withLocale(...)
  .unit(Currency.getInstance("USD"))
  .sign(SignDisplay.AUTO) // "123", "0", and "-123"
  .format(123)
  .toString();

Controlla la documentazione API di NumberFormatter per maggiori dettagli.

https://ffff65535.com

Come ottengo NumberFormat.getCurrencyInstance() per stampare valori di valuta USD negativi con un segno meno?


Eccone uno che uso sempre in una classe java o tramite il tag fmt: formatNumber jstl:

DecimalFormat format = new DecimalFormat("$#,##0.00;$-#,##0.00");
String formatted = format.format(15.5);

Produce sempre almeno $ 0,00 ed è coerente quando viene visualizzato. Comprende anche migliaia di separatori dove necessario. È possibile spostare il segno meno davanti al segno del dollaro se questo è il tuo requisito.


Probabilmente è preferibile creare il proprio DecimalFormat se si desidera un formato specifico anziché fare affidamento sull'impostazione predefinita.

Modifica: Probabilmente potresti anche DecimalFormat il risultato di NumberFormat.getCurrencyInstance () a DecimalFormat e DecimalFormat alle tue preferenze.


Provare:

NumberFormat.getCurrencyInstance(Locale.CANADA);


NumberFormat.getCurrencyInstance(Locale.UK);




number-formatting