141 votes

Comment imprimer les valeurs BigDecimal formatées?

J'ai BigDecimal domaine amount qui représente l' argent. Et je dois imprimer sa valeur dans le navigateur au format $123.00 , $15.50 , $0.33 .

Comment puis je faire ça?

(La seule solution simple que je vois moi-même consiste à obtenir floatValue de BigDecimal et à utiliser ensuite NumberFormat pour créer une présision à 2 chiffres pour la partie de fraction).

168voto

Luca Molteni Points 2328
 public static String currencyFormat(BigDecimal n) {
    return NumberFormat.getCurrencyInstance().format(n);
}
 

Il utilisera vos paramètres régionaux pour choisir votre symbole monétaire. Le javadoc de NumberFormat

44voto

demongolem Points 3521

Une autre façon qui pourrait faire sens pour la situation donnée est

BigDecimal newBD = oldBD.setScale(2);

Je viens de le dire, car , dans certains cas, quand il s'agit de l'argent va au-delà de 2 décimales ne fait pas de sens. En outre, cela pourrait conduire à

String displayString = oldBD.setScale(2).toPlainString();

mais je voulais simplement souligner le setScale méthode (qui peut aussi prendre un deuxième mode d'arrondi argument pour contrôler la façon dont cette dernière décimale est manipulé. Dans certaines situations, Java vous oblige à spécifier cette méthode d'arrondi).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X