Réponses:
System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646));
Output: 35,634,646
,
, mais il y a aussi des régions qui utilisent .
pour le regroupement à la place. En un mot, coder en dur une locale est considéré comme une mauvaise pratique.
Locale.getCurrent()
la solution
Vous demandez le plus rapide, mais peut-être voulez-vous dire «meilleur» ou «correct» ou «typique»?
Vous demandez également des virgules pour indiquer des milliers, mais peut-être voulez-vous dire "sous une forme lisible par l'homme selon la coutume locale de votre utilisateur"?
Vous le faites comme ceci:
int i = 35634646;
String s = NumberFormat.getIntegerInstance().format(i);
Les Américains obtiendront "35 634 646"
Les Allemands obtiendront "35.634.646"
Les Allemands suisses obtiendront "35'634'646"
int bigNumber = 1234567;
String formattedNumber = String.format("%,d", bigNumber);
Entiers:
int value = 100000;
String.format("%,d", value); // outputs 100,000
Double:
double value = 21403.3144d;
String.format("%,.2f", value); // outputs 21,403.31
String.format est assez puissant.
- Modifié par feedback psuzzi .
String.format
. Cela commence par return new Formatter(l) ...
etc. L'argument du ramasse-miettes n'est donc pas aussi fort qu'il n'y paraît.
int value = 35634646;
DecimalFormat myFormatter = new DecimalFormat("#,###");
String output = myFormatter.format(value);
System.out.println(output);
Production: 35,634,646
#,###
, si vous voulez un formatage de style européen, vous pouvez l'utiliser #,##,###
.
,
.
Les autres réponses sont correctes, mais vérifiez bien vos paramètres régionaux avant d'utiliser "%,d"
:
Locale.setDefault(Locale.US);
int bigNumber = 35634646;
String formattedNumber = String.format("%,d", bigNumber);
System.out.println(formattedNumber);
Locale.setDefault(new Locale("pl", "PL"));
formattedNumber = String.format("%,d", bigNumber);
System.out.println(formattedNumber);
Résultat:
35,634,646
35 634 646
Utilisez le %d
spécificateur de format avec une virgule:%,d
C'est de loin le moyen le plus simple.
Si la même chose doit être faite dans la JSP, utilisez:
<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>
bien sûr, pour plusieurs valeurs, utilisez:
<c:forEach items="${yourlist}" var="yourlist">
<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>
</c:forEach>
voici une solution pour ceux d'entre vous qui ne peuvent accéder à «numberformat» ni à «String.format» (en utilisant une version limitée de java dans un framework). J'espère que c'est utile.
number= 123456789;
thousandsSeparator=",";
myNumberString=number.toString();
numberLength=myNumberString.length;
howManySeparators=Math.floor((numberLength-1)/3)
formattedString=myNumberString.substring(0,numberLength-(howManySeparators*3))
while (howManySeparators>0) {
formattedString=formattedString+thousandsSeparator+myNumberString.substring(numberLength-(howManySeparators*3),numberLength-((howManySeparators-1)*3));
howManySeparators=howManySeparators-1; }
formattedString
utiliser l'extension
import java.text.NumberFormat
val Int.commaString: String
get() = NumberFormat.getInstance().format(this)
val String.commaString: String
get() = NumberFormat.getNumberInstance().format(this.toDouble())
val Long.commaString: String
get() = NumberFormat.getInstance().format(this)
val Double.commaString: String
get() = NumberFormat.getInstance().format(this)
résultat
1234.commaString => 1,234
"1234.456".commaString => 1,234.456
1234567890123456789.commaString => 1,234,567,890,123,456,789
1234.456.commaString => 1,234.456
ne peux-tu pas utiliser un
System.out.printf("%n%,d",int name);
La virgule dans le printf
devrait ajouter les virgules dans l' %d
inter.
Pas positif à ce sujet, mais fonctionne pour moi.
import java.text.NumberFormat;
.