amb*_*ack 5 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
Run Code Online (Sandbox Code Playgroud)
只有number_format()输出对我来说没问题.我错过了什么吗?我正在使用PHP 5.3.
Mit*_*aro 10
您将格式类型修饰符放在格式类型说明符之后而不是之前.试试这个:
printf('%.2F', $a)
Run Code Online (Sandbox Code Playgroud)
对于奇数输出,您的本地化设置可能正在执行此操作.尝试运行下面的行,看看为您的本地返回了什么.
echo setlocale(LC_ALL, null);
Run Code Online (Sandbox Code Playgroud)
尝试将您的区域设置更改为不同的区域,以查看问题是否消失.像这样:
setlocale(LC_ALL, 'en_CA.UTF-8');
Run Code Online (Sandbox Code Playgroud)