Подтвердить что ты не робот

Форматирование числа с помощью знака

Как мне форматировать в Java число с его ведущим знаком?

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

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

4b9b3361

Ответ 1

Используйте отрицательный подшаблон, как описано в 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

Ответ 2

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

Formatter formatter = new Formatter();
System.out.println(formatter.format(Locale.FRANCE, "e = %+10.4f", Math.E));
//e =    +2,7183

Ответ 3

Я сделал:

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

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

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

Ответ 4

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

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

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

ageektrapped

Источник: Отформатируйте отрицательную сумму USD со знаком минус, а не скобками (Java)