PHP舍入一半不起作用

时间:2015-07-01 06:14:36

标签: php

我有这段代码

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

我想将两位小数舍入到一半,我希望值为0.58 ... 但上面的代码打印0.57

我该怎么做?

3 个答案:

答案 0 :(得分:1)

0.572无法向上舍入为0.58,因为第三个小数2小于一半(或5)。如果您正在执行round(0.575, 2, PHP_ROUND_HALF_UP),则会获得0.58。在这种情况下,0.57是正确的舍入值。

如果您希望始终从第3个小数点向上舍入,无论其值如何,您都可以使用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

答案 1 :(得分:1)

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

$v = 0.575;
echo ceil($v * 100) / 100; // show 0,58

答案 2 :(得分:0)

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);

希望这对你有用!!