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의 배수에 가장 가까운x기능.Math.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 ;
폴에 대하여
이전 질문에 대한 새로운 답변, 없음if도 아니다Math
x % 5: the remainder
5 - x % 5: the amount need to add up
(5 - x % 5) % 5: make sure it less than 5
x + (5 - x % 5) % 5: the result (x or next multiple of 5)
~~((x + N - 1) / N): equivalent to Math.ceil(x / N)
function round5(x) {
return x + (5 - x % 5) % 5;
}
function nearest_multiple_of(N, x) {
return x + (N - x % N) % N;
}
function other_way_nearest_multiple_of(N, x) {
return ~~((x + N - 1) / N) * N;
}
console.info(nearest_multiple_of(5, 0)); // 0
console.info(nearest_multiple_of(5, 2022)); // 2025
console.info(nearest_multiple_of(5, 2025)); // 2025
console.info(other_way_nearest_multiple_of(5, 2022)); // 2025
console.info(other_way_nearest_multiple_of(5, 2025)); // 2025
정밀하게 둥근.
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))
}
라운드를 사용하는 이유는 예상되는 입력이 난수일 수 있기 때문입니다.
감사합니다!!!
저는 그 문제에 대해 잠시 루프를 사용하거나 다른 루프를 사용하여 해결했습니다.중요한 것은 말하는 숫자를 늘리는 것입니다.n % 5 == 0;이런 거.
while(n % 5 != 0) {
n++;
}
return n;
if( x % 5 == 0 ) {
return int( Math.floor( x / 5 ) ) * 5;
} else {
return ( int( Math.floor( x / 5 ) ) * 5 ) + 5;
}
아마도?
언급URL : https://stackoverflow.com/questions/18953384/javascript-round-up-to-the-next-multiple-of-5
'codememo' 카테고리의 다른 글
| SKlearn, 그리드 검색: 실행 중 진행 상황을 출력하는 방법은 무엇입니까? (0) | 2023.08.01 |
|---|---|
| 셀 소모를 최소화하기 위한 배치 요청 (0) | 2023.08.01 |
| 장식된 기능의 서명 보존 (0) | 2023.08.01 |
| free()는 메모리를 제로로 만드는 것입니까? (0) | 2023.08.01 |
| Bottle Py: jQuery AJAX 요청에 대한 CORS 활성화 (0) | 2023.08.01 |