PHP四舍五入函数round和sprintf比较

先来看一个例子

$a = 4.5449;
$b = 4.5500;
$c = 4.5501;
$d = 4.5549;
$e = 4.5550;
$f = 4.5551;

//保留1位小数对比:
echo round($a,1);        // 4.5
echo sprintf('%.1f',$a); // 4.5  
echo round($b,1);        // 4.6
echo sprintf('%.1f',$b); // 4.5  
echo round($c,1);        // 4.6
echo sprintf('%.1f',$c); // 4.6  
echo round($d,1);        // 4.6
echo sprintf('%.1f',$d); // 4.6  
echo round($e,1);        // 4.6
echo sprintf('%.1f',$e); // 4.6  
echo round($f,1);        // 4.6
echo sprintf('%.1f',$f); // 4.6  

//保留2位小数对比:
echo round($a,2);        // 4.54
echo sprintf('%.2f',$a); // 4.54  
echo round($b,2);        // 4.55
echo sprintf('%.2f',$b); // 4.55  
echo round($c,2);        // 4.55
echo sprintf('%.2f',$c); // 4.55  
echo round($d,2);        // 4.55
echo sprintf('%.2f',$d); // 4.55  
echo round($e,2);        // 4.56
echo sprintf('%.2f',$e); // 4.55  
echo round($f,2);        // 4.56
echo sprintf('%.2f',$f); // 4.56  

从上面的例子可以看出来,round函数是只看保留小数位数的后面一位是4还是5,是4则舍去,是5则进1,而sprintf函数则不然,sprintf函数是看保留小数位数的后面所有位,只有超过5才会进1,注意是超过

在保留1位小数时候,如上例 $b和$c:

echo round($b,1);        // 4.6
echo sprintf('%.1f',$c); // 4.5  

echo round($b,1);        // 4.6
echo sprintf('%.1f',$c); // 4.6  

在保留2位小数时候,如上例 $e和$f:

echo round($e,2);        // 4.56
echo sprintf('%.2f',$f); // 4.55  

echo round($e,2);        // 4.56
echo sprintf('%.2f',$f); // 4.56  

所以在使用过程中一定要注意这个问题,标准的四舍五入函数就是round,对于金额等其他必须两位小数的,不够补零的有可能会用到sprintf函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值