今天输出一个从数据库里面查询的数据,居然没有完整显示出来,丢失了后四位,一路排查下来,发现是php有个配置项,叫做precision
, 这个配置值管理了浮点数的精度输出,我们可以用ini_get('precision')
来获取这个值的设置,情况复现:
<?php
echo ini_get('precision'); //我这里的环境是14位
$a = -0.021740039999997407;
echo $a; //输出的时候,后四位被截断了。
所以为了解决这种问题,我们可以有两种方式实现:
- 一种是使用
ini_set
来调整precision
的值 - 一种是使用
sprintf
来设置输出的精度
第一种
<?php
echo ini_set('precision',18);
$a = -0.021740039999997407;
echo $a;
第二种
<?php
$a=-0.021740039999997407;
echo sprintf("%.18f", $a);