我正在学习更多PHP教程,特别是DevZone PHP 101,并且感到困惑:
echo .sprintf("%4.2f", (2 * $radius * pi()))
我发现了这个
我认为这意味着使用第一个后续参数的值产生一个四个位置宽,两个小数位的浮点字段。
来自C / C ++编程语言系列。 sprintf()将第一个参数作为格式语句。以%开头的任何内容都是字段说明符;其他任何东西都只是可打印的文字。因此,如果您给出一个包含所有文本且没有说明符的格式语句,它将完全按照它出现的方式打印。使用格式说明符,它需要处理数据。
但在尝试了一些不同的价值后,我仍然没有得到它。在我看来,如果在这种情况下它的目的只是将小数限制为2个位置,我必须把它放在
.sprintf("%.2f", (2 * $radius * pi()))
前面的4点有什么意义?在PHP Manual中,它让我相信它确定字符总数应该是4但是(a)不是这种情况,因为小数点使它成为5个字符,而(b)不是这样,因为我试图改变它变成了一个更大的数字,比如%8.2f,它没有任何一个零都在任何一端。有人可以更好地解释一下。
谢谢!
答案 0 :(得分:7)
格式说明符中的第一个数字% 8 .2f用于填充长度。默认情况下,sprintf使用空格字符。
你可以看到更大数字的效果:
printf("%20.2f", 1.23);
例如会导致:
1.23
号码前有16个空格。浮动占用4,填充长度设置为20。 (也许你把它打印到网页上,因此看不到填充空间..)
下面的sprintf
联机帮助页上还有一个示例,可以使用其他填充字符:
printf("%'*20.2f", 1.23); // use the custom padding character '*'
将导致:
****************1.23