回合我的号码?
我有一个号码
$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
有人知道如何处理这类案件吗?
答案 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 :更正了精确度。