Как распечатать до двух десятичных знаков в Java с помощью строителя строк? - PullRequest
8 голосов
/ 02 марта 2012

Привет, я пытаюсь распечатать после деления в строителе строк и печати этого строителя строк, позвольте мне показать мой код,

string.append("Memomry usage:total:"+totalMemory/1024/1024+
"Mb-used:"+usageMemory/1024/1024+
" Mb("+Percentage+"%)-free:"+freeMemory/1024/1024+
" Mb("+Percentagefree+"%)");

в приведенном выше коде "totalmemory" и "freememory" имеет двойной тип, имеющий байтызначение в точке не нулевое, поэтому я делю его на «1024» два раза, чтобы получить его в «Мб», а «строка» является переменной строителя строк после использования этого кода. Я просто печатаю его, получая результат, как показано ниже,

Used Memory:Memomry usage: 
total:13.3125Mb-used:0.22920989990234375Mb (0.017217645063086855%)
-free:13.083290100097656Mb (0.9827823549369131%)

я хочу получить проценты в двухзначном числе и значения используемой и свободной памяти в мб, как в этом примере «used: 2345.25» запомнить

Надежды на ваши предложения

Заранее спасибо

Ответы [ 4 ]

12 голосов
/ 02 марта 2012

Как насчет String.format()?

System.out.println(String.format("output: %.2f", 123.456));

Вывод:

output: 123.46
2 голосов
/ 02 марта 2012

Попробуйте вот так

    double d = 1.234567;
    DecimalFormat df = new DecimalFormat("#.##");
    System.out.print(df.format(d));

Используя DecimalFormat, мы можем отформатировать то, что хотели видеть.

1 голос
/ 02 марта 2012

Несмотря на то, что для этой проблемы можно использовать NumberFormat и его подкласс DecimalFormat, эти классы предоставляют множество функциональных возможностей, которые могут не потребоваться для вашего приложения.

Если целью является просто красивая печать, ярекомендовал бы использовать функцию форматирования класса String.Для вашего конкретного кода это будет выглядеть так:

string.append(String.format("Memomry usage:total:%1.2f Mb-used:%1.2f Mb(%1.2f %%)-free:%1.2f Mb(%1.2f %%)",totalMemory/1024/1024,usageMemory/1024/1024,Percentage,freeMemory/1024/1024,Percentagefree));

Если вы намереваетесь указать стандартный формат, в котором все числа представлены независимо от того, анализируются ли они из строк или форматируются в строки, тогда ярекомендовал бы использовать синглтоны классов * Format.Они позволяют вам использовать стандартные форматы, а также передавать описания форматов между методами.

Надеемся, что это поможет вам выбрать правильный метод для использования в вашем приложении.

1 голос
/ 02 марта 2012

Вы можете использовать DecimalFormat , чтобы распечатать до двух десятичных разрядов.Таким образом, чтобы напечатать x = 2345.2512 с двумя десятичными знаками, вы должны написать

NumberFormat f = new DecimalFormat("#.00");
System.out.println(f.format(x));

, что приведет к печати 2345.25.

...