Как Вы форматируете дробный процент с java.text. MessageFormat

Я не знаю, хорошо ли делать радио-кнопку с неуправляемым интерфейсом, но вы можете щелкнуть по ней с помощью jQuery в вашем component.ts.
Например, вы можете присвоить такой идентификатор, как 'radioButton', а затем просто добавить

$ ('# radioButton'). Click ()

[ 114] на вашем ngOnInit(). Кнопка будет нажата так, как если бы она была нажата пользователем.

35
задан Lorin 30 March 2009 в 18:34
поделиться

4 ответа

Похож на это:

String actualResult = MessageFormat.format("{0,number,#.##%}", fraction);

... работает.

Править: Видеть, как # и %, интерпретировало, посмотрите javadoc java.text. DecimalFormat.

РЕДАКТИРОВАНИЕ 2: И, да, это безопасно для интернационализации. Точка в строке формата интерпретируется как десятичный разделитель, не как точка hardcoded.:-)

52
ответ дан david a. 27 November 2019 в 06:28
поделиться

Я думаю, что надлежащий способ сделать это следующий:

NumberFormat percentFormat = NumberFormat.getPercentInstance();
percentFormat.setMaximumFractionDigits(1);
String result = percentFormat.format(0.125);

Это также принимает интернализацию во внимание. Например, на моей машине с венгерской локалью я получил "12,5%" как ожидалось. Инициализация percentFormat как NumberFormat.getPercentInstance(Locale.US) дает "12,5%", конечно.

52
ответ дан Chei 27 November 2019 в 06:28
поделиться

Как насчет

DecimalFormat f = new DecimalFormat( "###.#" );
System.out.println( f.format( 12.5 ) );

Символ формата '#' не печатает 0 как отсутствующий. Так 12.5-> "12.5", 12.0-> "12", не "12.0". Вы могли, конечно, настроить свое средство форматирования с, например, "###,###.##", место hundreths только обнаружится при необходимости в точности.

6
ответ дан Steve B. 27 November 2019 в 06:28
поделиться

Вы действительно понимаете это "expectedResult == actualResult" всегда будет ложь, правильно?

Так или иначе лучшее решение, которое я могу найти, состоит в том, чтобы установить средство форматирования явно. Это - код, который я протестировал:

String expectedResult = "12.5%";
double fraction = 0.125;
MessageFormat fmt = new MessageFormat("{0,number,percent}");
NumberFormat nbFmt = NumberFormat.getPercentInstance();
nbFmt.setMaximumFractionDigits(1); // or 2, or however many you need
fmt.setFormatByArgumentIndex(0, nbFmt);
String actualResult = fmt.format(new Object[] {fraction});
assert expectedResult.equals(actualResult) : actualResult +" is getting rounded off";
3
ответ дан Michael Myers 27 November 2019 в 06:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: