如何使用Javascript将整数向上或向下舍入到最接近的10


82

使用Javascript,我想将用户传递的数字四舍五入到最接近的10。例如,如果传递了7,则应返回10,如果传递了33,则应返回30。

Answers:


161

将数字除以10,将结果四舍五入,然后再乘以10:

var number = 33;
console.log(Math.round(number / 10) * 10);


12
Math.floor如果您想防止向上舍入,此技术也可以使用
Alex W

11
您可以使用Math.ceil方法进行舍入。
凯雷姆·德米尔


19

i一个int在哪里。

舍入到最接近的10的倍数,即

11变成10
19变成10
21变成20

parseInt(i / 10, 10) * 10;

舍入到最接近的10的倍数,即

11变成20
19变成20
21变成30

parseInt(i / 10, 10) + 1 * 10;  

4
它不应该是:(parseInt(i / 10,10)+1)* 10; ?
user3924331

@ user3924331,您是对的。正确答案是(parseInt(i / 10,10)+1)* 10; 编辑必须至少6个字符,因此不可能只添加这两个括号... _(ツ)_ /¯
费尔南多-

到最近的10增加为+10 100价值,因此它成为110下降到最近的10不-10减去100,所以100保持100
TitanFighter

6

我需要类似的东西,所以我写了一个函数。我在这里使用了该函数进行小数舍入,并且由于我还将它用于整数舍入,因此我也将在此处将其设置为答案。在这种情况下,只需输入要四舍五入的数字,然后输入要四舍五入到的数字10。

function roundToNearest(numToRound, numToRoundTo) {
    return Math.round(numToRound / numToRoundTo) * numToRoundTo;
}

我喜欢您已将其变成一个函数,但这是否会与已接受的答案产生不同的输出,如果没有,为什么使用不同的公式?
RozzA '16

它返回相同的值,但公式不同,因为它更易于使用。例如,如果您想舍入到最接近的值.25,则可以简单地.25用作第二个参数。如果要在其他答案中使用公式,则4在四舍五入到时必须用作第二个参数.25,这是违反直觉的。
cjbarth

你能证明吗?我刚刚在控制台中进行了一些测试,接受的答案使用.25第二个参数返回了正确的答案-我将其设为一个线性函数function roundTo(x,y){return Math.round(x / y) * y}
RozzA 2016年

@RozzA,你是对的。我在思考另一个类似问题的答案。我将简化我的功能。
cjbarth
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.