使用Math.Round获得可被五整除的数字

10

我有一个介于0和100之间的数字变量,可能是像83.333334这样的数字。

我想要使用Math.Round来舍入数字(例如Math.round(83.333334);)。如何做到使结果始终可以被5整除(即在[0、5、10、15……85、90、95、100]集合中)?

5个回答

32

除以5,四舍五入,乘以5。

alert(Math.round(83 / 5) * 5);

jsFiddle演示


2
@Xeon06 这种逻辑有数学名称吗? - Reddy
1
据我所知,没有,但我不是数学大师。可以考虑在http://math.stackexchange.com上提问。 - Alex Turpin

5
function roundDownToMultiple(number, multiple) {
    return number - (number % multiple);
}   

roundDownToMultiple(86, 5); // 85

roundDownToMultiple(89, 5); // 85

roundDownToMultiple(96, 5); // 95

2

使用这个Math.round(Math.floor(Math.random() * 100) / 5) * 5,你可以得到可以被5整除的数字。

  • 100 - 是结果的范围。

2
使用模运算符将您的数字“向下”舍入为5的倍数,请参见下面的示例。
 var x = Math.round(83.333334);

 x = x - (x % 5); 

如果您想要“向零舍入”(并且对负数也有正确的值),可以使用以下代码:
 x = Math[x < 0 ? 'ceil' : 'floor'] (x/5) * 5;

@bazmegakapa 没错,说实话我也认为这就是 OP 所要求的,所以我写了“round”。但也许他/她的意思是将其四舍五入到最接近的五的倍数。 - Filip Roséen - refp

1

试试这个。

Math.round(val / 5) * 5;

1
我找不到任何情况,加2.5会对结果产生影响。有例子吗? 编辑: 实际上,这会导致错误的结果。如果我输入80,我会使它变成82.5,然后结果为85,而最接近5的倍数仍应为80 - animuson
@animuson 不好意思,我脑海中想的是“向下取整”,而不是“四舍五入”。已修正! - cheeken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接