我需要在PHP 5.2.17中模拟ROUND_HALF_DOWN模式 - 我无法升级服务器的PHP版本。任何想法如何实现这一目标?round()模式ROUND_HALF_DOWN与PHP 5.2.17
基本思想是1.895变成1.89,而不是像圆通常那样的1.90。
编辑: 这个功能似乎这样的伎俩:
function nav_round($v, $prec = 2) {
// Seems to fix a bug with the ceil function
$v = explode('.',$v);
$v = implode('.',$v);
// The actual calculation
$v = $v * pow(10,$prec) - 0.5;
$a = ceil($v) * pow(10,-$prec);
return number_format($a, 2, '.', '');
}
谢谢,它似乎工作,但我需要做一些真实的测试,因为在某些情况下,它会产生与Joseph的功能不同的结果。 – ragulka
什么示例:)? – MGwynne
好吧,看起来这个功能差不多就是我所需要的,但是,由于一些奇怪的原因,有时它会将1.825调整到1.83。这似乎是PHP的一个错误 - 当提供的数字是计算结果(例如1.326 - 0.001)时,它会将其提高到1.83。当数字是以字符串的形式提供的(之前没有进行过任何计算,它可以正常工作,我通过在函数的开始处添加这些行来修复它: '$ v = explode('。',$ v); $ v = implode('。',$ v);' – ragulka