我需要一个实用函数,它接受一个整数值(长度从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。
等...
我该怎么做?
答案 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;
}
可能?