.sprintf(“%4.2f”,value)如何在PHP中运行?

时间:2013-02-08 01:48:49

标签: php printf

我正在学习更多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,它没有任何一个零都在任何一端。有人可以更好地解释一下。

谢谢!

1 个答案:

答案 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