基本上,我有一个号码:
<?
$rating = 72.7777777778;
?>
我基本上想做一些数学来创建这个数字为80。
如果数字为62.7777777778
,则该数字为60。
我希望数字四舍五入:
20, 40, 60, 80, 100
所以说我有三个数字:
36.999, 47, 91
我会得到:
40, 40, 100
我该怎么做呢?我试过圆形,细胞和放大器地板,但我没有任何地方。
做这样的事情会更容易吗?
if ($rating < 30){
$rating = 20;
}elseif (($rating > 30) && ($rating < 50)){
$rating = 40;
}elseif (($rating > 50) && ($rating < 70)){
$rating = 60;
}elseif (($rating > 70) && ($rating < 90)){
$rating = 80;
}else{
$rating = 100;
}
等...
答案 0 :(得分:10)
$rounded = round(62.222 / 20) * 20;
答案 1 :(得分:3)
试试这个:
$rating = round($rating/20.0)*20
答案 2 :(得分:3)
如果您希望所有内容始终四舍五入到最接近的<value>
,则除以<value>
,舍入并乘以<value>
。
// replace this with 20 to get 20,40,60,80...
// or with 7 to get 7, 14, 21, 28, 35...
// or with...........
$roundedBy = 10;
$toRound = 75;
echo
// 7.5 -> 8
round( $toRound / $roundedBy )
// 8 * 10 = 80;
* roundedBy;
如果您要整理,请将round
替换为ceil
。如果您要向下舍入,请将round
替换为floor
。
不幸的是,您的数字似乎与舍入不一致:36.999, 47
将分别舍入到40和50。
关于你的if ... else语句,你可以缩短它们:
if ($rating < 30){
$rating = 20;
}elseif ($rating < 50){ // will always already be >= 30
$rating = 40;
}elseif ($rating < 70){ // will always already be >= 70
$rating = 60;
}elseif ($rating < 90){ // will always already be >= 70
$rating = 80;
}else{ // will always already be >= 90
$rating = 100;
}