J'ai un BigDecimal
domaine amount
qui représente l' argent, et je dois imprimer sa valeur dans le navigateur dans un format comme $123.00
, $15.50
, $0.33
.
Comment puis je faire ça?
(La seule solution simple que je me vois est d' obtenir à floatValue
partir BigDecimal
et puis en utilisant NumberFormat
pour faire une précision à deux chiffres pour la partie de fraction).
Pour définir un séparateur de milliers, disons que
123,456.78
vous devez utiliser DecimalFormat :Voici le résultat:
Bien que j'aie défini un
#,###.00
masque, il formate également avec succès les valeurs les plus longues. Notez que le séparateur virgule (,) dans result dépend de vos paramètres régionaux. Ce peut être juste un espace () pour les paramètres régionaux russes.la source
"#,##0.00"
plutôt le modèle .Une autre façon qui pourrait avoir un sens pour la situation donnée est
Je dis simplement cela parce que dans certains cas, quand il s'agit d'argent qui dépasse 2 décimales, cela n'a pas de sens. En allant plus loin, cela pourrait conduire à
mais je voulais simplement mettre en évidence la méthode setScale (qui peut également prendre un deuxième argument de mode d'arrondi pour contrôler la façon dont cette dernière décimale est gérée. Dans certaines situations, Java vous oblige à spécifier cette méthode d'arrondi).
la source
// imprime 3.14
// imprime 13
la source
Similaire à la réponse de @Jeff_Alieffson, mais sans compter sur la valeur par défaut
Locale
:Utiliser
DecimalFormatSymbols
pour les paramètres régionaux explicites:Ou symboles de séparation explicites:
Ensuite:
Résultat:
la source
la source