2012-11-05 45 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