[javascript] 자바 스크립트 : 다음 5의 배수로 올림

가장 가까운 5의 배수 대신 5 의 다음 배수로 반올림하는 정수 값 (길이 2에서 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가장 가까운 배수 에 대한 일반적인 반올림의 변형 일 뿐이지 만, 대신 사용 하면 수학적 규칙에 따라 항상 아래 / 위 대신 반올림됩니다.xMath.round(number/x)*x.ceil.round


답변

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

이것은 숫자를 가장 가까운 5로 반올림합니다. 항상 가장 가까운 5로 반올림하려면을 사용하십시오 Math.ceil. 마찬가지로 항상 반올림하려면 Math.floor대신을 사용하십시오 Math.round. 그런 다음 다른 것과 마찬가지로이 함수를 호출 할 수 있습니다. 예를 들면

roundToNearest5(21)

반환됩니다 :

20


답변

이렇게?

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


답변

나는 비슷한 것을 찾고있는 동안 여기에 도착했다. 내 번호가 –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


답변

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 ;

폴 감사합니다


답변

// 정밀도로 반올림

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;
}


답변

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

round를 사용하는 이유는 예상 입력이 난수 일 수 있기 때문입니다.

감사!!!