我需要在 PHP 5.2.17 中模拟 ROUND_HALF_DOWN 模式 - 我无法升级服务器的 PHP 版本。有什么想法如何实现这一目标?
基本思想是 1.895 变成 1.89,而不是像通常使用 round() 那样变成 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, '.', '' );
}
您可以通过简单地转换为字符串并返回来进行作弊:
$num = 1.895;
$num = (string) $num;
if (substr($num, -1) == 5) $num = substr($num, 0, -1) . '4';
$num = round(floatval($num), 2);
EDIT:
这里以函数形式给出它:
echo round_half_down(25.2568425, 6); // 25.256842
function round_half_down($num, $precision = 0)
{
$num = (string) $num;
$num = explode('.', $num);
$num[1] = substr($num[1], 0, $precision + 1);
$num = implode('.', $num);
if (substr($num, -1) == 5)
$num = substr($num, 0, -1) . '4';
return round(floatval($num), $precision);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)