3

我正在学习更多的 PHP 教程,特别是DevZone PHP 101,并且对以下内容感到困惑:

echo .sprintf("%4.2f", (2 * $radius * pi()))

我找到了这个

我认为这意味着使用第一个后​​续参数的值生成一个四位宽、两位小数的浮点字段。

这来自于 C/C++ 系列编程语言。sprintf() 将第一个参数作为格式语句。其中以 % 开头的任何内容都是字段说明符;其他任何东西都只是可打印的文本。因此,如果您给出一个包含所有文本且没有说明符的格式语句,它将完全按照它出现的方式打印。使用格式说明符,它需要数据才能处理。

但是在尝试了一些不同的值之后,我仍然没有得到它。在我看来,在这种情况下,它的目的是否只是将小数点限制在 2 位,我所要做的就是

.sprintf("%.2f", (2 * $radius * pi()))

前面的4个是什么意思?在PHP 手册中,它让我相信它确定的字符总数应该是 4,但是 (a) 不是这种情况,因为小数点使它成为 5 个字符,并且 (b) 不是这种情况,因为我尝试将其更改为更大的数字,如 %8.2f 并且它没有在两端添加任何零。有人可以更好地解释这一点。

谢谢!

4

1 回答 1

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
于 2013-02-08T01:55:48.300 回答