如何将数字四舍五入到最接近的10?

tar*_*eld 87 php rounding

我们如何在php中将数字四舍五入到最接近的10?

说我有23,我会使用什么代码将其四舍五入30

Dar*_*nke 194

floor() 会下来.

ceil() 会上升.

round() 默认情况下会去最近的.

除以10,执行ceil,然后乘以10以减少有效数字.

$number = ceil($input / 10) * 10;
Run Code Online (Sandbox Code Playgroud)

编辑:我这么久已经这样做了......但是TallGreenTree的答案更清晰.

  • @DarenSchwenke,第三个参数并不像你想象的那样完全有效,它只能控制间隔之间正好一半的情况.`(15,-1,PHP_ROUND_HALF_UP); // 20`,`(14,-1,PHP_ROUND_HALF_UP); // 10` (4认同)
  • TallGreenTree的答案并不总是将其四舍五入。这个答案是使用ceil()的最正确方法 (2认同)

小智 162

round($number, -1);
Run Code Online (Sandbox Code Playgroud)

这会将$ number舍入到最接近的10.如果需要,您还可以传递第三个变量来更改舍入模式.

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

  • TallGreenTree是正确的.您可以使用第三个参数设置舍入模式:"模式一个PHP_ROUND_HALF_UP,PHP_ROUND_HALF_DOWN,PHP_ROUND_HALF_EVEN或PHP_ROUND_HALF_ODD." (12认同)
  • 这没有给出正确的结果.`23`将是'20`而不是'30`,因为它总是最接近10.舍入模式将无济于事,因为这只是在x后面的一半. (12认同)
  • 当问题说"四舍五入到最接近的10"两次时,你可以责怪他们假设提问者意味着"四舍五入到最接近的10"吗? (11认同)
  • 优雅使用原生功能. (2认同)

小智 14

我实际上正在搜索一个可以舍入到最近的变量的函数,这个页面一直在我的搜索中出现.所以,当我最终自己编写这个函数时,我想我会在这里发布它以供其他人查找.

该函数将舍入到最近的变量:

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

这段代码:

echo roundToTheNearestAnything(1234, 10).'<br>';
echo roundToTheNearestAnything(1234, 5).'<br>';
echo roundToTheNearestAnything(1234, 15).'<br>';
echo roundToTheNearestAnything(1234, 167).'<br>';
Run Code Online (Sandbox Code Playgroud)

将输出:

1230
1235
1230
1169
Run Code Online (Sandbox Code Playgroud)


Tim*_*002 10

这个问题有很多答案,可能所有人都会给你你想要的答案.但正如@TallGreenTree所提到的那样,它有一个功能.

但@TallGreenTree答案的问题在于它没有向上舍入,它会向最接近的10舍入.要解决这个问题,请添加+5到您的号码以进行舍入.如果要向下舍入,请执行-5.

所以在代码中:

round($num + 5, -1);
Run Code Online (Sandbox Code Playgroud)

你不能使用round modefor四舍五入,因为它只舍入分数而不是整数.

如果你想要向上舍入到最近100,你应该使用+50.


Joh*_*lan 7

div乘以10然后使用ceil然后使用10乘以10

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