Я должен был добавить import java.text.NumberFormat;.
Майк С
6
Это вынуждает группировку стиля США, которая всегда использует ,, однако есть также регионы, которые используют .для группировки. Одним словом, жесткое программирование локали считается плохой практикой.
Хай Чжан
4
@DreaminginCode Чтобы сделать это хорошо, Locale.getCurrent()есть решение
Роджер Р.В.
@RogerRV Нет Locale.getCurrent () (по крайней мере, на Android)
E.Akio
Да, это не лучший ответ для 96% людей, которые не живут в США
рис
152
Вы спрашиваете о самом быстром, но, возможно, вы имеете в виду «лучший» или «правильный» или «типичный»?
Вы также просите запятые, чтобы указать тысячи, но, возможно, вы имеете в виду «в обычной удобочитаемой для человека форме в соответствии с местным обычаем вашего пользователя»?
Вы делаете это так:
int i =35634646;String s =NumberFormat.getIntegerInstance().format(i);
Ваш шаблон не должен быть больше, чем #,###, если вы хотите европейский стиль форматирования, то вы можете использовать #,##,###.
Али
7
@ Али: Описанный вами формат используется только в Индии, и я уверен, что по крайней мере на 90% Индия не в Европе.
Кайрнарвон
Я понял ... хорошо, если вам нужно индийское форматирование, то вот как вы это делаете.
Али
1
Это зависит от локали и не даст правильного (в соответствии с вопросом) вывода, если запускать там, где локаль по умолчанию не разделяет тысячи с помощью ,.
Антак
17
Другие ответы верны, однако дважды проверьте вашу локаль перед использованием "%,d":
Вот решение для тех из вас, кто не может получить доступ к «numberformat» или «String.format» (используя ограниченную версию Java внутри фреймворка). Надеюсь, это полезно.
Попробуйте отредактировать свой ответ, добавив несколько комментариев к своему коду (и, возможно, оберните его в метод, чтобы он был более полезным)
noiaverbale
0
использовать расширение
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)
import java.text.NumberFormat;
.,
, однако есть также регионы, которые используют.
для группировки. Одним словом, жесткое программирование локали считается плохой практикой.Locale.getCurrent()
есть решениеВы спрашиваете о самом быстром, но, возможно, вы имеете в виду «лучший» или «правильный» или «типичный»?
Вы также просите запятые, чтобы указать тысячи, но, возможно, вы имеете в виду «в обычной удобочитаемой для человека форме в соответствии с местным обычаем вашего пользователя»?
Вы делаете это так:
Американцы получат "35 634 646"
Немцы получат "35.634.646"
Швейцарские немцы получат «35'634'646»
источник
источник
Целые:
парный:
String.format довольно мощный.
- Отредактировано в соответствии с psuzzi обратной связи.
источник
String.format
. Это начинается сreturn new Formatter(l) ...
и т.д. Таким образом, аргумент сборщика мусора не так силен, как кажется.Вывод:
35,634,646
источник
#,###
, если вы хотите европейский стиль форматирования, то вы можете использовать#,##,###
.,
.Другие ответы верны, однако дважды проверьте вашу локаль перед использованием
"%,d"
:Результат:
источник
Это решение сработало для меня:
источник
Используйте
%d
спецификатор формата с запятой:%,d
Это, безусловно, самый простой способ.
источник
Если то же самое должно быть сделано в JSP, используйте:
Конечно, для нескольких значений используйте:
источник
Вот решение для тех из вас, кто не может получить доступ к «numberformat» или «String.format» (используя ограниченную версию Java внутри фреймворка). Надеюсь, это полезно.
источник
использовать расширение
результат
источник
ты не можешь использовать
Запятая в
printf
должна добавить запятые в%d
интер.Не уверен, но у меня работает.
источник
Сначала вам нужно включить теги JSTL:
в начале страницы
источник