Можно ли использовать String.format для условной десятичной точки? - PullRequest
10 голосов
/ 29 января 2010

В java возможно ли использовать String.format для отображения десятичной дроби только в случае необходимости? Например, если я сделаю это:

String.format("%.1f", amount);

это будет форматировать: "1.2222" -> "1.2" "1.000" -> "1.0" и т.д.,

но во втором случае (1.000) я хочу, чтобы он возвращал только «1». Это возможно с String.format, или мне придется использовать DecimalFormatter?

Если мне нужно использовать десятичный форматер, нужно ли создавать отдельный десятичный формат для каждого типа формата, который я хочу? (до 1 знака после запятой, до 2 знака после запятой и т. д.)

Ответы [ 2 ]

13 голосов
/ 29 января 2010

Нет, вы должны использовать DecimalFormat :

final DecimalFormat f = new DecimalFormat("0.##");
System.out.println(f.format(1.3));
System.out.println(f.format(1.0));

Положите столько #, сколько хотите; десятичный формат будет печатать столько цифр, сколько он считает значимым, вплоть до числа # с.

3 голосов
/ 27 февраля 2013

Это может дать вам то, что вы ищете; Я не уверен в требованиях или контексте вашего запроса.

float f;
f = 1f
System.out.printf(f==Math.round(f) ? "%d\n" : "%s\n", f); //1
f = 1.555f
System.out.printf(f==Math.round(f) ? "%d\n" : "%s\n", f); //1.555

Отлично работал для того, что мне нужно.

FYI, выше, System.out.printf (fmt, x) похож на System.out.print (String.format (fmt, x)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...