Javascript:四舍五入到 5 的下一个倍数

IT技术 javascript math rounding
2021-02-26 19:17:09

我需要一个实用函数,它接受一个整数值(长度为 2 到 5 位数字),该值向上取整为 5 的下一个倍数而不是最接近的 5 的倍数。这是我得到的:

function round5(x)
{
    return (x % 5) >= 2.5 ? parseInt(x / 5) * 5 + 5 : parseInt(x / 5) * 5;
}

当我跑步时round5(32),它给了30我想要的 35。
当我跑步时round5(37),它给了35我想要的 40。

当我跑步时round5(132),它给了130我想要的 135。
当我跑步时round5(137),它给了135我想要的 140。

等等...

我该怎么做呢?

6个回答

这将完成以下工作:

function round5(x)
{
    return Math.ceil(x/5)*5;
}

它只是普通四舍五入number到最接近的x函数倍数的一种变体Math.round(number/x)*x,但使用.ceil.round不是根据数学规则使其始终向上舍入而不是向下/向上舍入

我会向该函数添加另一个参数,表示“舍入器”,因此可以将原始数字四舍五入为我们在函数调用中设置的任何值,而不仅仅是固定 5...
2021-04-25 19:17:09
好吧,它确实向上舍入到这里的整个整数,@AmitErandole ;)
2021-04-28 19:17:09
+1 表示紧凑和高效......它会四舍五入到 10,对吗?:)
2021-05-11 19:17:09
我喜欢这个解决方案!我用一个闭包来实现它,以便根据需要方便地更改多个内联:const roundToNearestMultipleOf = m => n => Math.round(n/m)*m用法:roundToNearestMultipleOf(5)(32)
2021-05-11 19:17:09
你能解释一下你是如何这么快地找到这个解决方案的吗?我认为 Math.ceil 只将小数四舍五入为整数。
2021-05-13 19:17:09
const roundToNearest5 = x => Math.round(x/5)*5

这会将数字四舍五入到最接近的 5。要始终四舍五入到最接近的 5,请使用Math.ceil同样,要始终向下舍入,请使用Math.floor代替Math.round然后,您可以像调用其他函数一样调用此函数。例如,

roundToNearest5(21)

将返回:

20
+1 因为我需要一种方法来四舍五入到最接近的五。(OP 要求四舍五入到接下来的五个(向上)。因此,接受的答案确实是正确的,@Oliver。)
2021-05-15 19:17:09

像这样?

function roundup5(x) { return (x%5)?x-x%5+5:x }
感谢您的解决方案,我的独特情况需要一个不使用浮点数学但可以使用模数的整数。
2021-05-20 19:17:09

我是在寻找类似的东西时到达这里的。如果我的号码是-0、-1、-2,它应该下限到-0,如果是-3、-4、-5,它应该下限到-5。

我想出了这个解决方案:

function round(x) { return x%5<3 ? (x%5===0 ? x : Math.floor(x/5)*5) : Math.ceil(x/5)*5 }

和测试:

for (var x=40; x<51; x++) {
  console.log(x+"=>", x%5<3 ? (x%5===0 ? x : Math.floor(x/5)*5) : Math.ceil(x/5)*5)
}
// 40 => 40
// 41 => 40
// 42 => 40
// 43 => 45
// 44 => 45
// 45 => 45
// 46 => 45
// 47 => 45
// 48 => 50
// 49 => 50
// 50 => 50
这可以通过使用更简单地完成 Math.round
2021-05-08 19:17:09
voici 2 solutions possibles :
y= (x % 10==0) ? x : x-x%5 +5; //......... 15 => 20 ; 37 => 40 ;  41 => 45 ; 20 => 20 ; 

z= (x % 5==0) ? x : x-x%5 +5;  //......... 15 => 15 ; 37 => 40 ;  41 => 45 ; 20 => 20 ;

问候保罗