2011-03-14 67 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