PHP 中错误的浮点格式(sprintf、printf)

发布于 2024-10-21 12:01:16 字数 347 浏览 2 评论 0原文

我正在调试 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

菊凝晚露 2024-10-28 12:01:16

您将格式类型修饰符放在格式类型说明符之后而不是之前。试试这个:

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

至于奇怪的输出,您的本地化设置可能正在这样做。尝试运行下面的行,看看为您的本地返回了什么。

echo setlocale(LC_ALL, null);

尝试将您的区域设置更改为不同的区域设置,看看问题是否消失。就像这样:

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

You are placing the format type modifiers after the format type specifier instead of before. Try this:

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

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.

echo setlocale(LC_ALL, null);

Try changing your locale to something different to see if the problem goes away. Like so:

setlocale(LC_ALL, 'en_CA.UTF-8');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文