2011-03-14 55 views
3

我調試PHP代碼,發現了以下格式:錯誤浮在PHP(的sprintf,printf的)

$a = 111749392891; 

printf('%f', $a); 
111749392890.:00000 

printf('%F', $a); 
111749392890.:00000 

printf('%F.2', $a) 
111749392890.:00000.2 

printf('%F0.2', $a); 
111749392890.:000000.2 

number_format($a, 2, '.',''); 
111749392891.00 

只有number_format()輸出看起來不錯給我。我錯過了什麼嗎?我使用PHP 5.3。

回答

8

您將格式類型修飾符放在格式類型說明符之後而不是之前。試試這個:

printf('%.2F', $a) 

至於奇數輸出,您的本地化設置可能會這樣做。嘗試運行下面的行,查看本地返回的內容。

echo setlocale(LC_ALL, null); 

嘗試將您的語言環境更改爲不同的內容以查看問題是否消失。像這樣:

setlocale(LC_ALL, 'en_CA.UTF-8'); 
+0

This Works,thanks。但是空格式類型修飾符呢?這是否有意義 - > 111749392890.:0000019? – ambienthack 2011-03-14 02:43:09

+0

更新了我的答案,我不能確定它是否是問題,但它是我能想到的唯一的東西。 – MitMaro 2011-03-14 02:52:18

+0

我的語言環境是Russian_Russia.1251。更改爲en_CA.UTF-8。相同的結果。實際上它返回111749392890.:00000,而不是111749392890.:0000019。 – ambienthack 2011-03-14 02:56:26