PHP四舍五入半不';行不通

PHP四舍五入半不';行不通,php,Php,我有这个密码 <?php echo round(0.572,2,PHP_ROUND_HALF_UP);?> 我想把两个小数四舍五入到一半,我希望值是0.58。。。 但上面的代码打印为0.57 怎么做?值0.572不能四舍五入到0.58,因为第三个小数点2,小于一半(或5)。如果你做的是round(0.575,2,PHP\u round\u HALF\u UP)你会得到0.58。在这种情况下,0.57是正确的四舍五入值 如果希望始终从第三个小数点向上取整,无论其值如何,都可以使用

我有这个密码

<?php echo round(0.572,2,PHP_ROUND_HALF_UP);?>

我想把两个小数四舍五入到一半,我希望值是0.58。。。 但上面的代码打印为0.57


怎么做?

0.572
不能四舍五入到
0.58
,因为第三个小数点
2
,小于一半(或
5
)。如果你做的是
round(0.575,2,PHP\u round\u HALF\u UP)
你会得到
0.58
。在这种情况下,
0.57
是正确的四舍五入值

如果希望始终从第三个小数点向上取整,无论其值如何,都可以使用
ciel()
,但这需要一些额外的数学运算。一个简单的函数来演示取整总是

function forceRoundUp($value, $decimals)
{
    $ord = pow(10, $decimals);
    return ceil($value * $ord) / $ord;
}

echo forceRoundUp(0.572, 2); // 0.58
echo forceRoundUp(0.57321, 4); // 0.5733

如果期望值为0,58,则不必使用“半圆”,而是使用ceil函数

$v = 0.575;
echo ceil($v * 100) / 100; // show 0,58
函数取整($value,$places)
{
$mult=pow(10,abs($places));
返回$places<0?
ceil($value/$mult)*$mult:
ceil($value*$mult)/$mult;
}
回波四舍五入(0.572,2);

希望这对你有用

复制品?谢谢,我正看着呢
function round_up($value, $places)
{
  $mult = pow(10, abs($places));
  return $places < 0 ?
  ceil($value / $mult) * $mult :
  ceil($value * $mult) / $mult;
}

echo round_up(0.572,2);