Форматирование чисел с плавающей точкой и указание ширины результата - PullRequest
0 голосов
/ 31 декабря 2011

Следующий пример кода:

System.out.printf(" %1.1f " , 2122.3856); 

Распечатывает 2122.4

Формат, который я указал для приведенного выше результата, показывает, что я запросил одну десятичную точку и 1 символ в длину для ширины. Я вижу одну десятичную точку (т.е. 4), но почему указанная ширина не работает?

Ответы [ 3 ]

2 голосов
/ 31 декабря 2011

Цитата http://docs.oracle.com/javase/6/docs/api/java/util/Formatter.html#syntax (акцент мой):

Ширина - это минимальное количество символов, которое будет записано в вывод

Если ваш номер больше, он будет полностью напечатан. Как можно печатать 2122 с одним символом?

1 голос
/ 31 декабря 2011

Я нашел следующее в javadoc для java.util.Formatter (выделение мое):

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

Ширина является минимальной только и используется для дополнения вывода, так что (например) столбцы будут выровнены.

1 голос
/ 31 декабря 2011

Спецификация width является минимальной , а не максимальной.

Если вы хотите установить ширину, которая по существу делает значение числа бессмысленным, вы должны либо выполнить математику (например, получить десятую позицию), либо манипулировать преобразованием в строку.

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