今天写程序时发现PHP四舍五入函数round没有把0.5进位,查了下资料发现如下解释:
在对正好一半的分数进行舍入时 round() 在偶数次舍去,在奇数次进位。如果你想迫使它对 .5(或 .05)总向一个方向舍入,加上或减去一个很小的因子。对一半值舍去对另一半值进一的背后原因是避免传统的银行问题,即如果总是舍去则银行从顾客那里多拿了钱,如果总是进一则银行最终会损失了钱。对此平均舍入则在统计上达到了平衡。
如需强制进位的解决方案
function stdround($num, $d=0)
{
return round($num + 0.0001 / pow(10, $d), $d);
}