Javascript:舍入到5的下一个倍数
我需要一个实用函数,它取整数值(长度范围从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。
等等…
我该怎么做呢?
这将做的工作:
function round5(x) { return Math.ceil(x/5)*5; }
这只是普通舍入number
到x
函数Math.round(number/x)*x
最接近的倍数的变体,但是使用.ceil
而不是.round
使得它总是按照math规则向上舍入,而不是向下/向上舍入。
喜欢这个?
function roundup5(x) { return (x%5)?xx%5+5:x }
voici 2 solutions possibles : y= (x % 10==0) ? x : xx%5 +5; //......... 15 => 20 ; 37 => 40 ; 41 => 45 ; 20 => 20 ; z= (x % 5==0) ? x : xx%5 +5; //......... 15 => 15 ; 37 => 40 ; 41 => 45 ; 20 => 20 ;
问候保罗
我在寻找类似的东西的时候到了这里。 如果我的数字是-0,-1,-2,它应该落到-0,如果它是-3,-4,-5,它应该是-5。
我想出了这个解决scheme:
function round(x) { return x%5<3 ? (x%5===0 ? x : Math.floor(x/5)*5) : Math.ceil(x/5)*5 }
而testing:
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
if( x % 5 == 0 ) { return int( Math.floor( x / 5 ) ) * 5; } else { return ( int( Math.floor( x / 5 ) ) * 5 ) + 5; }
也许?