Comment définir le séparateur de milliers en Java?
J'ai une représentation String d'un BigDecimal que je souhaite formater avec un séparateur de milliers et retourner sous forme de chaîne.
java
bigdecimal
Funtime
la source
la source
Réponses:
Cela devrait fonctionner (non testé, basé sur JavaDoc):
Selon JavaDoc, le cast de la première ligne doit être enregistré pour la plupart des paramètres régionaux.
la source
getDecimalFormatSymbols()
dit:Returns: a copy of the desired DecimalFormatSymbols
. Vous devriez donc utilisersetDecimalFormatSymbols(theCopy)
après avoir modifié la copie.new
et le remettre au formateur:DecimalFormatSymbols customSymbol = new DecimalFormatSymbols();
customSymbol.setDecimalSeparator(decimalSeperator.charAt(0));
customSymbol.setGroupingSeparator(thousandSeperator);
formatter.setDecimalFormatSymbols(customSymbol);
Vous pouvez utiliser la fonction de formatage avec ",";
"," inclut des caractères de regroupement spécifiques aux paramètres régionaux.
docs
la source
.
comme séparateur?format()
avec une locale explicite (Local.US
est connu d'utiliser,
comme séparateur) puis remplacez,
votre séparateur personnalisé:String.format(Locale.US, "%,d", n).replace(',', '.')
.int
. Ou unlong
. Ou unBigInteger
. Et utilisez f si vous souhaitez utiliserdouble
,float
ouBigDecimal
.ÉDITER
Pour obtenir un séparateur de regroupement personnalisé tel que l'espace, procédez comme suit:
la source
NumberFormat
objet avec les propriétés souhaitées et vous l'utilisez pour formater votre fichierBigDecimal
. ABigDecimal
n'a qu'une valeur spécifiée, il n'a pas de format spécifié.essayez ce code pour formater comme utilisé au Brésil:
la source
parameters.put("REPORT_LOCALE", new Locale("pt", "BR"));
Envoyez ce paramètre au rapport.Si vous utilisez un séparateur de milliers pour le type de données Integer, utilisez 1.
String.format ("%, d \ n", 58625) et la sortie sera 58 625
la source
la source
la source
La réponse acceptée doit être vraiment modifiée sinon ne fonctionne pas. Le getDecimalFormatSymbols fait une copie défensive. Donc,
La nouvelle ligne est celle-ci: formatter.setDecimalFormatSymbols (symboles);
la source
Pour les décimales :
la source
Comme mentionné ci-dessus, le lien suivant vous donne le code de pays spécifique pour permettre à Java de localiser le numéro. Chaque pays a son propre style.
Dans le lien ci-dessus, vous trouverez le code du pays qui doit être placé ici:
La Suisse, par exemple, formate les nombres comme suit:
1 000,00 -> 1 000,00
code postal
Pour y parvenir, les codes suivants fonctionnent pour moi:
Le résultat est comme prévu:
la source
la source