当我输入带有负参数的printf()时,整数占位符为零填充。零填充不会应用。
php > printf('%02d', -6);
-6
我做错了吗?或者这是一个错误?
答案 0 :(得分:3)
每篇文档:
paddings应用于整个字符串:
一个可选的填充说明符,用于说明将结果填充到右侧字符串大小的字符。这可以是空格字符或0(零字符)。默认是使用空格填充。可以通过在其前面加上单引号(')来指定备用填充字符。请参阅以下示例。
(强调我的)。
如果可以接受,您可能需要使用符号说明符,例如:
php > printf('%+03d', -6);
-06
php > printf('%+03d', 6);
+06
答案 1 :(得分:1)
从技术上讲,它是正确的,因为你指定了2位数,而减号则占其中一位数。如果你使用
printf('%03d', -6);
你会得到-06。
答案 2 :(得分:1)
“ - ”计为字符,因此您需要使用%03d。
我不相信这是一个错误,因为在处理具有设定长度的字段时经常使用0填充,如字符,因此如果%02d产生一个包含3个字符的数字,则天空可能会下降。