如何将数字凑到最接近的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
在这个问题上有很多肛门,大概都会给你你正在寻找的答案。 但是,正如@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';