PHP round()函数进位问题

本文探讨了PHP中round函数的特殊行为,即在遇到恰好一半数值时采用平均舍入法,而非传统意义上的四舍五入。为了实现强制进位的需求,提供了一种通过微调数值再进行圆整的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天写程序时发现PHP四舍五入函数round没有把0.5进位,查了下资料发现如下解释:

在对正好一半的分数进行舍入时 round() 在偶数次舍去,在奇数次进位。如果你想迫使它对 .5(或 .05)总向一个方向舍入,加上或减去一个很小的因子。对一半值舍去对另一半值进一的背后原因是避免传统的银行问题,即如果总是舍去则银行从顾客那里多拿了钱,如果总是进一则银行最终会损失了钱。对此平均舍入则在统计上达到了平衡。 


如需强制进位的解决方案

function stdround($num, $d=0)
  {
   return round($num + 0.0001 / pow(10, $d), $d);
  } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值