我正在学习更多的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,它没有在任何一端粘贴任何零.有人可以更好地解释一下.
谢谢!
格式说明符中的第一个数字%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)