Printf: различия в реализации Java и C - PullRequest
2 голосов
/ 22 марта 2012

Сегодня я заметил, что не могу использовать * для передачи аргументов ширины или точности в реализацию Java printf.

.

То есть следующие аргументы printf действительны в C, но не в Java:

"%*d", 10, 3
"%-*d", 10, 3
"%0*d", 10, 3
"%*.5f", 11, 1.0/9
"%-11.*f", 5, 1.0/9
"%0*.*f", 11, 5, 1.0/9

Есть ли еще какие-то отличия в реализации, о которых мне следует знать?

Ответы [ 2 ]

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

Я бы не думал об этом как о различиях. Я просто внимательно прочитал документацию по Java и полностью ушел от этого. Мышление с точки зрения различий может привести к тому, что что-то ускользнет из сети.

Другими словами, я бы трактовал сходства как совпадения и предполагал, что они различны до тех пор, пока не доказано обратное:

1 голос
/ 05 декабря 2012

Одно отличие меня поразило совсем недавно: при печати числа с плавающей запятой с% g (автоматически выбирается% e или% f) флаг точности отличается:

Java: precision = 
  "number of fractional digits after the decimal point" (%f, %e)
  "total number of digits in the resulting magnitude after rounding"  (%g  %G) 

C: precision = 
  "number of fractional digits after the decimal point" (%f %e )   
  "maximum number of significant digits" (%g  %G) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...