php输出浮点数,丢失精度的问题

今天输出一个从数据库里面查询的数据,居然没有完整显示出来,丢失了后四位,一路排查下来,发现是php有个配置项,叫做precision, 这个配置值管理了浮点数的精度输出,我们可以用ini_get('precision') 来获取这个值的设置,情况复现:

<?php
 echo ini_get('precision'); //我这里的环境是14位
 $a = -0.021740039999997407;
 echo $a; //输出的时候,后四位被截断了。

所以为了解决这种问题,我们可以有两种方式实现:

  1. 一种是使用ini_set 来调整 precision 的值
  2. 一种是使用sprintf 来设置输出的精度

第一种

<?php
 echo ini_set('precision',18);
 $a = -0.021740039999997407;
 echo $a;

第二种

<?php
$a=-0.021740039999997407;
echo sprintf("%.18f", $a);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值