2010-01-13 12 views

Répondre

21

est ici que je finis toujours en utilisant soit dans une classe java ou via le FMT: formatNumber tag jstl:

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

Il produit toujours au moins un 0,00 $ et est cohérente lors de l'affichage. Comprend également des séparateurs de milliers si nécessaire. Vous pouvez déplacer le signe moins devant le signe dollar si c'est votre condition.

2

Il est probablement préférable de créer le vôtre DecimalFormat si vous voulez un format spécifique plutôt que de se fier au format par défaut.

Edit: Vous pourriez probablement jeter aussi le résultat de NumberFormat.getCurrencyInstance() pour DecimalFormat et l'adapter à vos préférences.

+0

Probablement vous avez raison, mais ma demande devrait être en mesure de f monnaie ormat en mai locales. Ne serait-il pas trop difficile de mettre en œuvre la formation pour tous ces lieux? –

30

Il faut un peu peaufiner le DecimalFormat retourné par NumberFormat.getCurrencyInstance() pour le faire de manière indépendante des paramètres régionaux. Voici ce que je ne (testé sur Android):

DecimalFormat formatter = (DecimalFormat)NumberFormat.getCurrencyInstance(); 
String symbol = formatter.getCurrency().getSymbol(); 
formatter.setNegativePrefix(symbol+"-"); // or "-"+symbol if that's what you need 
formatter.setNegativeSuffix(""); 

IIRC, Currency.getSymbol() ne peut pas retourner une valeur pour tous les paramètres régionaux pour tous les systèmes, mais il faut travailler pour les grands (et je pense qu'il a une solution de repli raisonnable elle-même, de sorte que vous ne devriez pas avoir à faire quoi que ce soit)

1

Essayez:

NumberFormat.getCurrencyInstance(Locale.CANADA);

0
NumberFormat.getCurrencyInstance(Locale.UK);