Какой формат я должен использовать, чтобы показать 2 десятичных знака или нет? - PullRequest
2 голосов
/ 31 марта 2011

Я пытаюсь отформатировать число с помощью printf, но не могу найти правильную маску.

Например:

class F { 
    public static void main( String ... args ) { 
        p(2.123123);
        p(2.0);
    }
    public static void p(double d ) { 
        System.out.printf("%.2f",d);
        System.out.println();
    }

}

Напечатает:

2.12
2.00

Какую маску я должен использовать, чтобы напечатать

2.12
2

Или, если возможно:

2.12
   2

Справочная информация:

Я буду использовать это для отображения размеров файлов. На данный момент выглядит так:

23/03/11 12:15 0.00    TEST/
30/03/11 10:35 2.57 kb picture-3651.jpg
12/04/11 14:49 7.31 mb reference.pdf

Что, разумеется, выглядит ужасно, когда файл является каталогом, а его размер равен 0 байтов.

Ответы [ 2 ]

4 голосов
/ 31 марта 2011

Использование DecimalFormat делает это:

DecimalFormat df = new DecimalFormat("#.##");
0 голосов
/ 31 марта 2011

Вы можете попробовать поэкспериментировать с %.3g, он должен делать примерно то, что вы ищете, но включает числа слева от . в маске.

Если это не сработаетдля вас вы также можете просто найти .00 и удалить его, используя String.replace.

РЕДАКТИРОВАТЬ после некоторых экспериментов:

String.format("%.2f\n", value).replace(".00", "") должен делать то, что вы ищете.

...