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

Rya*_*yan 3 php printf

我正在学习更多的PHP教程,特别是DevZone PHP 101,我很困惑:

echo .sprintf("%4.2f", (2 * $radius * pi()))
Run Code Online (Sandbox Code Playgroud)

我找到了这个

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

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

但在尝试了一些不同的价值后,我仍然没有得到它.在我看来,如果在这种情况下它的目的只是将小数限制为2个位置,我必须放置的是

.sprintf("%.2f", (2 * $radius * pi()))
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

mar*_*rio 7

格式说明符中的第一个数字%8 .2f用于填充长度.默认情况下,sprintf使用空格字符.

你可以看到更大数字的效果:

printf("%20.2f", 1.23);
Run Code Online (Sandbox Code Playgroud)

例如会导致:

                1.23
Run Code Online (Sandbox Code Playgroud)

这个号码前面有16个空格.浮动占用4,填充长度设置为20.(也许你把它打印到网页上,因此看不到填充空间..)

并且在sprintf联机帮助页面下面还有一个示例,可以使用替代填充字符:

printf("%'*20.2f", 1.23); // use the custom padding character '*'
Run Code Online (Sandbox Code Playgroud)

将导致:

****************1.23
Run Code Online (Sandbox Code Playgroud)