Двойной% форматирования вопрос для printf в Java - PullRequest
24 голосов
/ 04 октября 2010

%s - это строка в printf, а% d - это десятичная дробь, которую я подумал ... но при вводе

writer.printf("%d dollars is the balance of %s\r\n", bal, nm);

.. выдается исключение, сообщающее, что %d! = lang.double.Идеи?

Ответы [ 3 ]

57 голосов
/ 04 октября 2010

%d для целых чисел, используйте %f, вместо этого оно работает для типов float и double:

double d = 1.2;
float f = 1.2f;
System.out.printf("%f %f",d,f); // prints 1.200000 1.200000
24 голосов
/ 04 октября 2010

Да, %d означает десятичную, но это означает десятичная система счисления , а не десятичная точка.

Кроме того, в дополнение к предыдущему сообщению вы также можете контролировать количество отображаемых десятичных знаков. Попробуйте это,

System.out.printf("%.2f %.1f",d,f); // prints 1.20 1.2

Подробнее см. В API документах .

1 голос
/ 21 марта 2018

Да,% d для десятичного числа (целое число), двойное ожидание% f. Но простое использование% f по умолчанию до точности 6. Чтобы напечатать все цифры точности для двойного, вы можете передать его через строку как:

System.out.printf("%s \r\n",String.valueOf(d));

или

System.out.printf("%s \r\n",Double.toString(d));

Это то, что println делает по умолчанию:

System.out.println(d) 

(и завершает строку)

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