Javascript:累计到5的下一个倍数

时间:2013-09-23 06:57:41

标签: javascript math rounding

我需要一个实用函数,它接受一个整数值(长度从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。

等...

我该怎么做?

8 个答案:

答案 0 :(得分:201)

这将完成工作:

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

这只是公共舍入number的变体,是x函数Math.round(number/x)*x的最接近倍数,但使用.ceil代替.round会使其始终为圆根据数学规则而不是向下/向上。

答案 1 :(得分:4)

喜欢这个吗?

function roundup5(x) { return (x%5)?x-x%5+5:x }

答案 2 :(得分:4)

我在寻找类似的东西时到了这里。 如果我的数字是-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

答案 3 :(得分:3)

const roundToNearest5 = x => Math.round(x/5)*5

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

roundToNearest5(21)

将返回:

20

答案 4 :(得分:2)

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 ;

此致 保罗

答案 5 :(得分:0)

//精确舍入

var round = function (value, precision) {
    return Math.round(value * Math.pow(10, precision)) / Math.pow(10, precision);
};

//精确舍入到5

var round5 = (value, precision) => {
    return round(value * 2, precision) / 2;
}

答案 6 :(得分:0)

const fn = _num =>{
    return Math.round(_num)+ (5 -(Math.round(_num)%5))
}

使用回合的原因是预期输入可以是随机数。

谢谢!

答案 7 :(得分:-2)

if( x % 5 == 0 ) {
    return int( Math.floor( x / 5 ) ) * 5;
} else {
    return ( int( Math.floor( x / 5 ) ) * 5 ) + 5;
}

可能?