2012-11-05 59 views
1

我知道printf用于输出,sprintf用于存储。PHP的printf存储和输出

但是在这个代码:

$str = printf('%.1f', 1.3); 
echo $str; 

为什么它输出1.33?我认为它会输出1.31.3?

+0

** **二十进制点?怎么会这样? –

+0

这个例子看起来像你想'sprintf()'。 – alex

回答

6

printf PHP中的函数确实有两件事:打印它的参数(根据格式字符串,作为第一个发送)AND返回此打印字符串的长度。

通常不会使用由printf返回的值 - 但在这种情况下不会使用。由于(按格式)printf这里必须打印'1.3'字符串(小数点后只有一位数字),其长度为3 - 所以它存储在$str变量中,并在下一个语句(与echo)中打印。所以整个输出是'1.33'。

一点题外话,这个...

$str = print(1.3); 
echo $str; 

...打印 '1.31',如print也做了两两件事 - 打印出它的参数和返回1