Отформатируйте число с начальным знаком - PullRequest
41 голосов
/ 09 марта 2011

Как мне отформатировать в Java число с начальным знаком?

Отрицательные числа правильно отображаются с начальным -, но, очевидно, положительные числа не отображаются с +.

Как это сделать на Java?Моя текущая строка формата валюты \#\#\#,\#\#\#,\#\#\#,\#\#\#,\#\#0.00 (да, мне нужно отформатировать положительные / отрицательные значения валюты)

Ответы [ 4 ]

60 голосов
/ 09 марта 2011

Используйте отрицательный подшаблон, как описано в javadoc для DecimalFormat .

DecimalFormat fmt = new DecimalFormat("+#,##0.00;-#");
System.out.println(fmt.format(98787654.897));
System.out.println(fmt.format(-98787654.897));

производит (в моей французской локали, где пробел - это разделитель групп, а запятая - это десятичный разделитель):

+98 787 654,90
-98 787 654,90
13 голосов
/ 09 марта 2011

API для Форматер предоставляет пример:

Formatter formatter = new Formatter();
System.out.println(formatter.format(Locale.FRANCE, "e = %+10.4f", Math.E));
//e =    +2,7183
7 голосов
/ 03 февраля 2015

Я сделал:

private NumberFormat plusMinusNF = new DecimalFormat("+#;-#");

Integer newBalance = (Integer) binds.get("newBalance");
bindsForUpdate.put("plusMinus", plusMinusNF.format(newBalance));

, который отформатировал положительные целые числа, например, от 5 до "+5" и отрицательные целые числа, например, от -7 до "-7" (как и ожидалось)

2 голосов
/ 09 марта 2011

Требуется небольшая настройка DecimalFormat возвращается NumberFormat.getCurrencyInstance () для сделать это независимо от локали. Вот что я сделал (проверено на Android):

DecimalFormat formatter = (DecimalFormat)NumberFormat.getCurrencyInstance();
String symbol = formatter.getCurrency().getSymbol();
formatter.setNegativePrefix(symbol+"-");
// or "-"+symbol if that's what you need
formatter.setNegativeSuffix("");

IIRC, Currency.getSymbol () не может вернуть значение для всех локалей для всех системы, но это должно работать для основные (и я думаю, что это имеет разумный запасной вариант сам по себе, так что вы не должен ничего делать)

ageektrapped

Источник: Форматировать отрицательную сумму в долларах США со знаком минус, а не в скобках (Java)

...