Использование MessageFormat, группирование десятичных знаков

#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 в Google

3. Да, но я искал 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); }