我在调试 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/