3

是否可以对一个数字进行四舍五入,如果它是 0.5,就留下它,任何低于 0.5 的向下舍入,高于 0.5 的任何向上舍入?

例如:

  • 5.0 * 1.35 = 6.75 // leave it
  • 5.2 * 1.35 = 7.02 // round down to 7.00
  • 5.5 * 1.35 = 7.56 // round up to 8.00

我已经格式化了round($n,0, PHP_ROUND_HALF_UP)$n 是上面 calc 的乘积,它留下 6.75 但为下一个返回 7.02。我也尝试过round($n,-1, PHP_ROUND_HALF_UP),它在第二次计算中给了我 7.00,但当然不会为第一次返回 6.75,而是返回 680。

这是一个票据标记计算,用户输入第一个数字并乘以第二个数字。我实际上删除了小数,因为他们不想看到它,并且他们希望对结果进行这种自定义的舍入。

4

3 回答 3

1

在 PHP 中确定给定浮点数的最后一个非零数字的值的唯一方法是将其转换为字符串。

$str = (string) $float;
$result = ($str[strlen($str) - 1] == 5) ? $float : round($float);

例子

当然,无论你做什么,都会因为浮点精度问题而产生很小的误差。

于 2012-06-08T16:36:51.043 回答
1
function myround($num, $prec) {
  $rhu = round($num, $prec, PHP_ROUND_HALF_UP);
  $rhd = round($num, $prec, PHP_ROUND_HALF_DOWN);

  return ($rhu + $rhd) / 2;
}

适用于您喜欢的任何精度。对于百位,如示例中所示,$prec需要为 2。

于 2012-06-08T16:48:00.387 回答
0
$n = round($n, 2);
if($n % .05 != 0 || $n % .1 == 0)
{
  $n = round($n);
}

这对你有用吗?我假设5你说的是百分之一,如果不是,5那么你想要一个整数。

于 2012-06-08T16:38:12.673 回答