PHP 中错误的浮点格式(sprintf、printf)
我正在调试 PHP 代码并发现以下内容:
$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。
I was debugging PHP code and found out the following:
$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
Only number_format() output looks OK to me. Am I missing something? I'm using PHP 5.3.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您将格式类型修饰符放在格式类型说明符之后而不是之前。试试这个:
至于奇怪的输出,您的本地化设置可能正在这样做。尝试运行下面的行,看看为您的本地返回了什么。
尝试将您的区域设置更改为不同的区域设置,看看问题是否消失。就像这样:
You are placing the format type modifiers after the format type specifier instead of before. Try this:
As for the odd output, it is possible that your localization settings are doing that. Try running the line below and see what is returned for your local.
Try changing your locale to something different to see if the problem goes away. Like so: