java.text.DecimalFormat пусто, когда ноль? - PullRequest
3 голосов
/ 09 июня 2010

Можно ли показывать пустую (пустую строку), когда число равно нулю (0)? (строго без нулей слева)

Ответы [ 2 ]

5 голосов
/ 09 июня 2010

Вы можете использовать MessageFormat, в частности его ChoiceFormat особенность:

double[] nums = {
    -876.123, -0.1, 0, +.5, 100, 123.45678,
};
for (double num : nums) {
    System.out.println(
        num + " " +
        MessageFormat.format(
            "{0,choice,-1#negative|0#zero|0<{0,number,'#,#0.000'}}", num
        )
    );
}

Это печатает:

-876.123 negative
-0.1 negative
0.0 zero
0.5 0.500
100.0 1,00.000
123.45678 1,23.457

Обратите внимание, что MessageFormat использует DecimalFormat под капотом. С документация :

FORMAT TYPE:       number
FORMAT STYLE:      subformatPattern
SUBFORMAT CREATED: new DecimalFormat(
                      subformatPattern,
                      DecimalFormatSymbols.getInstance(getLocale())
                   )

Так что использует DecimalFormat, хотя и косвенно. Если это по какой-то причине запрещено, то вы должны самостоятельно проверить наличие специального условия, поскольку DecimalFormat не различает ноль. С документация :

Шаблоны

DecimalFormat имеют следующий синтаксис:

 Pattern:
         PositivePattern
         PositivePattern ; NegativePattern

Нет возможности предоставить специальный шаблон для нуля, поэтому нет шаблона DecimalFormat, который мог бы сделать это для вас. Вы можете либо, скажем, проверить if, либо просто позволить MessageFormat/ChoiceFormat сделать это за вас, как показано выше.

0 голосов
/ 07 августа 2012

Вы можете использовать метод String.format:

int num1=0;
int num2=33;
string str1 = (num1!=0) ? String.format("%3d", num1) : "   ";
string str2 = (num2!=0) ? String.format("%3d", num2) : "   ";

System.out.println("("+str1+")");  // output: (   )
System.out.println("("+str2+")");  // output: ( 33)

синтаксис формата очень похож на c printf (для этого основного использования)

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