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

标签 php floating-point 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。

最佳答案

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

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

至于奇怪的输出,可能是您的本地化设置造成的。尝试运行下面的行并查看为您的本地返回的内容。

echo setlocale(LC_ALL, null);

尝试将您的语言环境更改为不同的设置以查看问题是否消失。像这样:

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

关于php - PHP 中错误的浮点格式(sprintf、printf),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5294129/

相关文章:

c# - 将 float 格式化为小数点后两位

pthreads - 线程 : one printf statement get printed twice in child thread

python - 如何从 2 个值形成一个字符串

php - 如何在 PHP 中发送带有 SSL 证书的 SOAP 请求?

php - MYSQL:查询中大量比较的 WHERE IN () 速度问题

php - 如何使用 C 程序中的数据动态更新浏览器

c++ - 从 unsigned long long 转换为 double ,反之亦然会改变值

c - 打印字符串指针导致 C 中的输出损坏

c - printf 格式说明符的参数和 printf 格式说明符的额外参数中的类型无效

php - 发生错误后不要清除文本框值