PHP printf () заполнение цифрами с отрицательным числом - PullRequest
1 голос
/ 24 февраля 2012

Когда я ввожу printf () с отрицательным параметром для целочисленного заполнителя с нулевым заполнением. Нулевое заполнение не применяется.

php > printf('%02d', -6);
-6

Я что-то не так делаю? Или это ошибка?

Ответы [ 3 ]

3 голосов
/ 24 февраля 2012

По документам:

отступы применяются ко всей строке:

Необязательный спецификатор заполнения, который сообщает, какой символ будет использоваться для дополнения результатов вправо размер строки . Это может быть символ пробела или 0 (нулевой символ). По умолчанию это заполнение пробелами. Альтернативный символ дополнения можно указать, поставив перед ним одинарную кавычку ('). Смотрите примеры ниже.

(выделено мое).

Вы можете использовать спецификатор знака, если это приемлемо, например ::

php > printf('%+03d', -6);
-06
php > printf('%+03d', 6);
+06
1 голос
/ 24 февраля 2012

"-" считается как символ, поэтому вам нужно использовать% 03d.

Я не верю, что это ошибка, поскольку заполнение 0 часто используется при работе с полями, которые имеют заданную длину, как в символах, так что если% 02d выдает число с 3 символами, небо может упасть.

1 голос
/ 24 февраля 2012

Технически это правильно, потому что вы указываете 2 цифры, и знак минус учитывает одну из них. Если вы используете

printf('%03d', -6); 

вы получите -06.

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