圆我的号码?

时间:2011-02-23 17:08:53

标签: php

回合我的号码?

我有一个号码

$n = -5665.36
$round_set = can be : 1,10,10,100,1000

使用$ round_set条件获取$ m

如果$ round_set = 1

  $m = $n

如果$ round_set = 10

$m = -5660

如果$ round_set = 100

  $m = -5600

如果$ round_set = 1000

  $m = -5000

有人知道如何处理这类案件吗?

6 个答案:

答案 0 :(得分:2)

使用此

intval($m/$round_set) * $round_set

答案 1 :(得分:1)

不会有这样的工作吗?

function rounded_nb($number, $round_set) {
    return floor($number/$round_set)*$round_set;
}

对于任何非0 $ round_set?

答案 2 :(得分:1)

http://codepad.viper-7.com/1EHFWEJ在此进行测试。

<?php
$n = -5665.36;
$round_set = 100;
$precision =  -log10($round_set);
$m = ($round_set == 1 ? $n : round($n, $precision) + $round_set);
echo $m;
?>

答案 3 :(得分:0)

您不需要开关,请执行

if($round_set > 0) {
  $rounded = $round_set * floor($n / $round_set);
} else {
  $rounded = $n;
}

这应该可以做到。

答案 4 :(得分:0)

$rs1 = max(1, $round_set);
$m = $rs1 * floor($n / $rs1);

然而,1,10,100,......值$round_set可能更有意义。

答案 5 :(得分:-1)

为什么不利用PHP的round

$m = round($n, ($round_set == 0 ? 0 : -1 * log10($round_set)) );

修改:更正了log10(0)的边缘情况。

编辑2 :更正了精确度。