如何将数字凑到最接近的10?

我们怎样才能在一个数字四舍五入到最接近的10?

假设我有23 ,我会用什么代码将它舍弃到30

floor()会下降。

ceil()会上升。

round()将默认为最接近的值。

除以10,然后乘以10来减less有效位数。

 $number = ceil($input / 10) * 10; 

编辑:我一直这样做了这么久..但TallGreenTree的答案是更清洁。

 round($number, -1); 

这将把$数凑到最接近的10.如果有必要,还可以传递第三个variables来改变舍入模式。

更多信息在这里: http : //php.net/manual/en/function.round.php

其实我正在寻找一个可以绕到最近的variables的函数,这个页面一直在我的search中出现。 所以当我终于自己写了这个函数的时候,我想我会把它发布给别人去找。

该函数将四舍五入到最接近的variables:

 function roundToTheNearestAnything($value, $roundTo) { $mod = $value%$roundTo; return $value+($mod<($roundTo/2)?-$mod:$roundTo-$mod); } 

此代码:

 echo roundToTheNearestAnything(1234, 10).'<br>'; echo roundToTheNearestAnything(1234, 5).'<br>'; echo roundToTheNearestAnything(1234, 15).'<br>'; echo roundToTheNearestAnything(1234, 167).'<br>'; 

会输出:

 1230 1235 1230 1169 

div除以10,然后使用ceil然后多10

http://php.net/manual/en/function.ceil.php

在这个问题上有很多肛门,大概都会给你你正在寻找的答案。 但是,正如@TallGreenTree所提到的,这是一个function。

但@TallGreenTree的答案的问题是,它不是四舍五入,它到最接近的10.为了解决这个问题,加上+5你的号码为了四舍五入。 如果你想圆下来,做-5

所以在代码中:

 round($num + 5, -1); 

您不能使用舍入round mode来舍入,因为它只会舍入分数而不是整数。

如果你想四舍五入到最接近的100 ,你应该使用+50

尝试

round(23, -1);

我们可以通过“欺骗”

 $rounded = round($roundee / 10) * 10; 

我们也可以避免通过浮点除法

 function roundToTen($roundee) { $r = $roundee % 10; return ($r <= 5) : $roundee - $r : $roundee + (10 - $r); } 

编辑:我不知道(并没有很好地logging在网站上) round现在支持“负面”的精度,所以你可以更容易地使用

 $round = round($roundee, -1); 

再次编辑:如果你总是想四舍五入,你可以尝试

 function roundUpToTen($roundee) { $r = $roundee % 10; if ($r == 0) return $roundee; return $roundee + 10 - $r; } 
 $value = 23; $rounded_value = $value - ($value % 10 - 10); //$rounded_value is now 30 

尝试这个:

 ceil($roundee / 10) * 10; 

向下舍入到最接近的10,然后加10。

 round($num, -1) + 10 

我的第一个冲动是谷歌的“PHPmath”,我发现有一个名为“round()”的核心math库函数,可能是你想要的。

试试这个……通过数字来舍去,它会四舍五入到最接近的十分之一。它有助于….

($ num,1);

对于那些想用原始SQL来做,而不使用php,java,python等的人SET SQL_SAFE_UPDATES = 0; UPDATE db.table SET value=ceil(value/10)*10 where value not like '%0'; SET SQL_SAFE_UPDATES = 0; UPDATE db.table SET value=ceil(value/10)*10 where value not like '%0';