提问人:Евгений Решетников 提问时间:3/1/2023 更新时间:3/1/2023 访问量:77
如何在没有 number_format() 的情况下为 php 中的“echo”设置更多 12 位数字的浮点精度?
How set float precision for 'echo' in php more 12 digits without number_format()?
问:
PHP代码:
$val1 = 32;
$val2 = 0.00012207031255;
$res = $val1 - $val2;
echo "echo: ".$res."\n";
echo "json: ".json_encode($res)."\n";
echo "form: ".number_format($res, 14);
输出:
echo: 31.999877929687
json: 31.99987792968745
form: 31.99987792968745
如何在没有 echo 的情况下显示 14 位小数number_format()
我尝试设置,但没有任何改变precision=14
php.ini
答:
1赞
NIKUNJ PATEL
3/1/2023
#1
如果要在不更改每行代码的情况下为整个项目添加全局解决方案,则可以在引导文件中设置或在php.ini中设置相同的值。ini_set('precision', 14)
要格式化单个值,您可以使用具有 14 个十进制字符格式的函数。sprintf()
法典:
$val1 = 32;
$val2 = 0.00012207031255;
$res = $val1 - $val2;
echo sprintf("echo: %.14f\n", $res);
echo "json: ".json_encode($res)."\n";
echo "form: ".number_format($res, 14);
结果:
echo: 31.99987792968745
json: 31.99987792968745
form: 31.99987792968745
评论
0赞
Евгений Решетников
3/1/2023
是的。这是一个很好的解决方案,但我使用的是大项目,其中有很多外国代码中的“回声”。而且我无法编辑它
0赞
NIKUNJ PATEL
3/1/2023
更新用于添加全局解决方案的代码。
0赞
Евгений Решетников
3/1/2023
太好了,正是我需要的
0赞
Dmitry Leiko
3/1/2023
#2
您可以尝试使用数学 php 模块函数:
php > $a = 32;
php > $b = 0.00012207031255;
php > echo bcsub($a, $b, 14);
31.99987792968745
更多细节在这里
1赞
Theo27
3/1/2023
#3
你可以使用 sprintf()
$val1 = 32;
$val2 = 0.00012207031255;
$res = $val1 - $val2;
echo "echo: ".rtrim(sprintf("%.14f", $res), "0")."\n";
评论