#java #messageformat
#java #messageformat
Вопрос:
Я использую MessageFormat. Текущая модель такова:
{0,number,#,###.######}
Потому 0.123456
что это дает мне
0.123456
что и ожидалось. Однако я хочу сгруппировать десятичные разряды так, чтобы отображение
0.123 456
Я бы также хотел, чтобы конечные нули, так что для 0.1234
отображения было бы
0.123 400
Кажется, я не могу найти правильный пользовательский шаблон для этого
Комментарии:
1. И, да, я мог бы написать синтаксический анализатор для a
float
, сгенерировать число с интервалом, а затем использовать {0} для отображения числа.
Ответ №1:
Для конечных нулей вы можете заменить на #
с 0
в десятичных разрядах, например "{0,number,#,###.000000}"
, см. DecimalFormat#Специальные символы шаблона
0 Number Yes Digit
# Number Yes Digit, zero shows as absent
Комментарии:
1. По какой-то причине эта страница не отображалась для меня в Google:-( Спасибо
2. Просто поищите
java 8 decimalformat
в Google3. Да, но я искал MessageFormat. Он должен быть одинаковым для любого компьютерного языка, который его поддерживает (Java, PHP и т.д.).
4.для десятичной группировки я не смог найти ничего полезного. Итак, вот несколько регулярных выражений fu. Надеюсь, это поможет
String formatted = MessageFormat.format("{0,number,#,##0.000000}", 12.1234);
Pattern p = Pattern.compile("(\d [.]\d{3})(\d{3})");
Matcher m = p.matcher(formatted);
if (m.matches()) {
String correct = m.group(1) " " m.group(2);
System.out.println(correct);
}