Відповіді:
System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646));
Output: 35,634,646
,
, однак є також регіони, які використовуються .
для групування. Словом, жорстке кодування локалі вважається поганою практикою.
Locale.getCurrent()
це рішення
Ви запитуєте якнайшвидше, але, можливо, ви маєте на увазі "найкращий" чи "правильний" чи "типовий"?
Ви також просите комами вказати тисячі, але, можливо, ви маєте на увазі "в нормальній для людини формі, зрозумілій відповідно до місцевого звичаю вашого користувача"?
Ви робите це так:
int i = 35634646;
String s = NumberFormat.getIntegerInstance().format(i);
Американці отримають "35 634 646"
Німці отримають "35.634.646"
Швейцарські німці отримають "35'634'646"
int bigNumber = 1234567;
String formattedNumber = String.format("%,d", bigNumber);
Цілі числа:
int value = 100000;
String.format("%,d", value); // outputs 100,000
Парний:
double value = 21403.3144d;
String.format("%,.2f", value); // outputs 21,403.31
String.format досить потужний.
- Відредаговано за відгуками psuzzi .
String.format
. Починається з return new Formatter(l) ...
т. Д. Тож аргумент щодо збирання сміття не настільки сильний, як здається.
int value = 35634646;
DecimalFormat myFormatter = new DecimalFormat("#,###");
String output = myFormatter.format(value);
System.out.println(output);
Вихід: 35,634,646
#,###
, якщо ви хочете форматування європейського стилю, тоді ви можете використовувати #,##,###
.
,
.
Інші відповіді правильні, проте двічі перевірте свою мову перед використанням "%,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);
Результат:
35,634,646
35 634 646
Використовуйте %d
специфікатор формату з комою:%,d
Це, безумовно, найпростіший спосіб.
Якщо те ж саме потрібно зробити в СПП, використовуйте:
<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>
звичайно для використання декількох значень:
<c:forEach items="${yourlist}" var="yourlist">
<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>
</c:forEach>
ось рішення для тих із вас, хто не може отримати доступ до "numberformat" або "String.format" (використовуючи обмежену версію Java в рамках). Сподіваюся, що це корисно.
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
використовувати 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)
результат
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
ви не можете використовувати
System.out.printf("%n%,d",int name);
Кома в значку printf
повинна додавати коми в %d
міжряддя.
Не позитивно щодо цього, але працює на мене.
import java.text.NumberFormat;
.